@Configuration
通過配置文件注入類,properties可以完成springboot大部分bea配置, 但是這不代表所有Bean能夠被配置,這個時候需要用到@Configuration+@Bean或者@Configuration+@Component。@Configuration 註解類等價與 XML中配置 beans,用@Bean 註解方法等價於 XML 中配置 bean。
下面舉例說明2中配置方法:
1. @Configuration+@Bean
1.1BeanTest類:
public class BeanTest {
private Logger logger = LoggerFactory.getLogger(BeanTest.class);
public void test(){
logger.info("BeanTest is going..........");
}
}
1.2 ConfigurationInfo類
@Configuration
public class ConfigurationInfo {
private Logger logger = LoggerFactory.getLogger(ConfigurationInfo.class);
public ConfigurationInfo(){
logger.info("ConfigurationInfo with Configuration....");
}
@Bean
public BeanTest testBean() {
return new BeanTest();
}
}
1.3 單元測試用例
@Test
public void testConfiguration(){
logger.info("testConfiguration in.......");
ApplicationContext context = new AnnotationConfigApplicationContext(ConfigurationInfo.class);
BeanTest mBeanTest = (BeanTest) context.getBean("testBean");
mBeanTest.test();
}
1.4 測試結果:
2. @Configuration+@Component
2.1 BeanComponentTest類
@Component
public class BeanComponentTest {
private Logger logger = LoggerFactory.getLogger(BeanComponentTest.class);
public void test(){
logger.info("BeanComponentTest is going..........");
}
}
2.2 ConfigurationComponentInfo 類,要掃描Bean的位置
@Configuration
@ComponentScan(basePackages = "com.test.annotaton.bean")
public class ConfigurationComponentInfo {
private Logger logger = LoggerFactory.getLogger(ConfigurationComponentInfo.class);
public ConfigurationComponentInfo(){
logger.info("ConfigurationComponentInfo with Configuration....");
}
}
2.3 單元測試類
@Test
public void testConfigComponent(){
logger.info("testConfigComponent in.......");
ApplicationContext context = new AnnotationConfigApplicationContext(ConfigurationComponentInfo.class);
BeanComponentTest mBeanComponentTest = (BeanComponentTest) context.getBean("beanComponentTest");
mBeanComponentTest.test();
}
2.4 測試結果