Spring装配bean方法实例总结
一前言
在XML中进行显式配置。
在Java中进行显式配置。
隐式的bean发现机制和自动装配
关于xml配置不会在本篇说明,有兴趣的读者可以自行了解学习;
二自动装配bean
自动装配Bean主要通过如下两个方式实现自动装备bean
- 组件扫描(componentscanning):Spring会自动扫描发现上下文中所创建的bean;对应java配置@ComponentScan注解,其会默认会扫描与配置类相同的包和其子包;如果是xml就是
- 自动装配(autowiring):Spring自动化管理bean之间的依赖关系;java配置@Autowiring注解,相当于java规范中的@Inject注解;其可以使用在任何类的任何方法上;不建议将required属性设置为false,否则如果在bean未装配的情况下就会报空指针异常;
- @Component注解:赋予spring上下文组件类一个ID;如果不指定value默认就是将类名的第一个字母变为小写形式;其相当于java规范中的@Name注解;
敲黑板了:
理下思路我们可以通过@Component注解使用在多个类上实现多个bean;然后通过@Autowiring使用在方法上实现bean之间的依赖注入;最后通过@ComponentScan将所有bean扫入spring应用上下文;当然里面还有许多使用的小细节,要不然很容易出错;
实现如下
2.1棉被类
/** *@Authorlsc *棉被
*/ @Component publicclassQuilt{ //质量 privateStringquality; publicvoidproduct(){ System.out.println("生产与中国"); } //省略set/get }
2.2被单类
/** *@Authorlsc *被单
*/ @Component//相当于@Component("sheet") publicclassSheet{ //颜色 privateStringcolor; //长度 privateStringlength; privateQuiltquilt; //使用构造器注入方式将Quilt注入到Sheet,你也可以使用set方式;原则上还可以其它方法 publicSheet(Quiltquilt){ this.quilt=quilt; } //省略set/get }
2.3被单配置类
/** *@Authorlsc *被单配置类
*/ @Configuration//告诉spring这是一个配置类 @ComponentScan//这边的包是com.zszxz.auto相当于@ComponentScan(basePackages={"com.zszxz.auto"}) publicclassSheetConfig{ }
2.4测试类
/** *@Authorlsc * */ @RunWith(SpringJUnit4ClassRunner.class)//创建spring应用上下文 @ContextConfiguration(classes=SheetConfig.class)//加载配置类 publicclassSheetTest{ @Autowired Sheetsheet; @Test publicvoidsheetTest(){ //生产与中国 sheet.getQuilt().product(); } }
三java配置
java配置只需要通过如下注解即可完成,通常使用在引入第三方类时;
- @Configuration注解:告诉spring这是一个配置类
- @Bean注解:告诉spring这是一个bean,使用在方法上,默认bean的名称就是方法名也就是前面提到的bean的ID;
思路:@Configuration注解声明的配置类中使用注解@Bean,就实现了java配置;
3.1棉类
/** *@Authorlsc *棉
*/ publicclassCotton{ //质量 privateStringquality; publicvoidproduct(){ System.out.println("cotton生产与中国"); } //省略set/get }
3.2毛毯
/** *@Authorlsc *毛毯
*/ publicclassBlanket{ //颜色 privateStringcolor; //长度 privateStringlength; //构造器注入 privateCottoncotton; @Autowired publicBlanket(Cottoncotton){ this.cotton=cotton; } //省略set/get }
3.3毛毯配置类
/** *@Authorlsc *毛毯配置类
*/ @Configuration//告诉spring这是一个配置类,spring会扫描其所有配置纳入spring容器 publicclassBlanketConfig{ //将Cotton注入到spring应用上下文 @Bean publicCottoncotton(){ returnnewCotton(); } //将Cotton注入到Blanket注入到spring应用上下文 @Bean publicBlanketblanket(Cottoncotton){ returnnewBlanket(cotton); } }
3.4测试类
/** *@Authorlsc * */ @RunWith(SpringJUnit4ClassRunner.class)//创建spring应用上下文 @ContextConfiguration(classes=BlanketConfig.class)//加载配置类 publicclassBlanketTest{ @Autowired Blanketblanket; @Test publicvoidsheetTest(){ //cotton生产与中国 blanket.getCotton().product(); } }
四配置结合
使用@Import注解能将一个配置类导入另一个配置类,通常用来合并配置类,下面的示例使用方式更加优雅;
使用示例
/** *@Authorlsc * */ @Configuration @Import({SheetConfig.class,BlanketConfig.class}) publicclassMergeConfig{ }
测试示例
/** *@Authorlsc * */ @RunWith(SpringJUnit4ClassRunner.class)//创建spring应用上下文 @ContextConfiguration(classes=MergeConfig.class)//加载配置类 publicclassMergeTest{ @Autowired Blanketblanket; @Test publicvoidsheetTest(){ //cotton生产与中国 blanket.getCotton().product(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。