Spring@Bean-Spring Bean的创建取决于服务类名



我使用Spring 4.2.8,并且我有下面的服务类。如果该类的名称为ScheduleEmailCreateAndSendServiceImpl,则一切正常(在启动时调用方法generalEmailMessage以创建Spring Bean(如果我将此类重命名为EmailCreateAndSendServiceImpl,那么在启动时将不会调用方法generalEmailMessage——有人知道为什么吗?

@Service("emailCreateAndSendService")
public class ScheduleEmailCreateAndSendServiceImpl extends AbstractService 
implements EmailService {
protected EmailMessage generalMessage;
@Override
public void createAndSendMessage(String receiver, boolean emailActive, Object[] values) throws BusinessException {
// create and send email
}
@Bean
public EmailMessage generalEmailMessage() {
this.generalMessage = new GeneralEmailInformationMessage();
return generalMessage;
}

}

[编辑]

这个代码是相同的

@Configuration
public @Data class ScheduleGeneralEmailConfiguration {
protected EmailMessage generalMessage;
public ScheduleGeneralEmailConfiguration() {
System.out.println("asdf");
}
@Bean
public EmailMessage generalEmailMessage() {
this.generalMessage = new GeneralEmailInformationMessage();
return generalMessage;
}

}

@Bean带注释的方法应该在@Configuration带注释的类中。

您还可以将带@Bean注释的方法放在Spring Boot应用程序的主类中,该应用程序使用封装了@Configuration@EnableAutoConfiguration@ComponentScan注释的@SpringBootApplication进行注释。

确保您的@Configuration注释类位于Spring Boot应用程序类的同一包或子包中

最新更新