[英]Spring 3.1: How do I inject a bean created in a different configuration class
我只是使用Spring 3.1設置一個Web應用程序,我試圖通過使用java配置來實現這一點。 我有兩個配置類“AppConfig”(通用bean定義)和“WebConfig”(Spring MVC配置)。 如何引用已在WebConfig類中的AppConfig中聲明的bean?
下面,AppConfig配置類中的驗證器應該使用來自WebConfig的messageSource。
AppConfig的:
@Configuration
@ComponentScan(basePackages = { "com.example" })
public class AppConfig {
@Bean
public Validator validator() {
final LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
validator.setValidationMessageSource(messageSource());
return validator;
}
}
WebConfig:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "com.example.common.web", "com.example.web" })
public class WebConfig extends WebMvcConfigurerAdapter {
@Bean
public ReloadableResourceBundleMessageSource messageSource() {
final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:messages");
return messageSource;
}
}
當我想從同一個配置類引用一個bean時,我只是調用它的setup方法,但是當bean在另一個類中聲明時,我顯然不能這樣做。
非常感謝您的建議!
配置也是bean,因此您可以使用@Autowired
public class WebConfig extends WebMvcConfigurerAdapter {
@Autowired
private Validator validator;
...
}
有兩種方法可以做到:
public class WebConfig {
@Autowired
AppConfig appconfig;
...
}
或者,正如Aaron Digulla所說:
public class WebConfig {
@Autowired
Validator validator;
...
}
我更喜歡第一種形式,一種是自動裝配,你可以訪問整個配置,然后你可以通過調用theNewBean.setValidator(appConfig.validator());
來訪問它的bean theNewBean.setValidator(appConfig.validator());
。
我認為Aaron Digulla和Amir Pashazadeh都是正確的,但自從JSR 330推出以來,還有另一個注釋。 您也可以使用@Inject
@Inject
private Validator validator;
http://docs.spring.io/spring/docs/3.0.x/reference/beans.html#beans-autowired-annotation
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.