我想知道在通过注释进行配置时是否有办法让@Required正常工作。我上下颠倒了我的配置,但似乎没有什么对我有用。我正在使用Spring 3.1 我的基本配置如下所示:
@Configuration
public class SpringConfig {
@Bean
public MailSender mailSender() {
MailSender MailSender = new MailSender();
// mailSender.setBean(dlMailSender);
return mailSender;
}
@Bean
public MyBean myBean() {
MyBean myBean = new MyBean();
// setting som props
return myBean;
}
}
MailSender在这里:
@Configurable
public class MailSender {
private MyBean myBean;
@Required
public void setMyBean(MyBean myBean) {
this.myBean = myBean;
}
}
我正在用这个junit测试它:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { SpringConfig.class }, loader = AnnotationConfigContextLoader.class)
public class MailSenderTest {
@Test
public void test_main_beans_exists() {
// when then given
}
}
感谢您的帮助
答案 0 :(得分:0)
简短回答 - 这在理论上是不可能的。
使用基于XML的bean时,bean定义及其依赖项完全由应用程序上下文管理。 Spring能够检查,正在设置什么以及未设置什么。
使用基于注释的配置时,您自己设置依赖项。在从工厂方法返回之前,Spring无法知道你在使用bean做了什么。
如果要检查bean是否已正确初始化,请使用InitializingBean
或@PostConstruct
并实施自检方法。 Spring经常在自己的bean中做这件事。