Spring速查手册——Bean装配
来源:互联网 发布:淘宝店铺创意名字大全 编辑:程序博客网 时间:2024/06/08 13:25
Spring提供三种Bean的装配方式,分别是:
1. 自动装配Bean
2. 在Java中装配Bean
3. 在XML中装配Bean
1. 自动装配Bean(注解)
Spring从两个角度完成Bean的自动化装配:
- 组件扫描:扫描上下文中所有的Bean(由@Component、@Named注解完成)
- 自动装配:将指定的Bean注入到指定的Bean中(由@Autowired、@Injected注解完成)
1.1. 开启组件扫描
Java的配置方式
@Configuration // 把当前类作为配置类@ComponentScan // 开启组件扫描public class XXXConfig(){}
- 默认情况下扫描与当前配置类共同包下的组件;
- 指定扫描的基础包:
- @ComponentScan(“com.njupt.xxx”)
- @ComponentScan(basePackages=”com.njupt.xxx”)
- @ComponentScan(basePackages={“com.njupt.xxx”,”com.nju.xxx”})
- @ComponentScan(basePackageClasses={“XXXService.class”,”YYYService.class”})
XML的配置方式
<context:component-scan base-package="xxx.xxx.xxx">
1.2. 标识组件
@Componentclass xxx{}
- 默认的Bean ID为第一个字母小写的类名。
- 指定Bean ID:@Component(“xxx”)
- 第二种标识方式:@Named,和@Component用法一样,只不过它是Java Dependency Injection规范中提供的。
1.3. 自动装配
自动注入构造器参数
@Autowiredpublic XXX( Y y ){ this.y = y;}
自动注入setter方法参数
@Autowiredpublic void setXXX( X x ){ this.x = x;}
PS:也可使用@Inject注解,和@Named一样,都是Java依赖注入规范的注解,Spring实现了这些注解。
2. 在Java中装配Bean
2.1. 声明Bean
@Configurationclass XXXConfig{ // 创建一个Bean @Bean public A setA(){ return new A(); }}
- 方法名:bean的名字
也可以通过@Bean(name=”xxx”)指定bean的名字。 - 函数体:通过new创建对象
- 返回值:为该创建的bean对象
2.2. 注入
@Configurationclass XXXConfig{ @Bean public A setA(){ return new A(); } // 注入方式一:执行setA函数(low比) @Bean public B setB(){ return new B( setA() ); } // 注入方式二:Spring自动注入(优雅) @Bean public B setB( A a ){ return new B( a ); }}
3. 在XML中装配Bean
3.1. 声明一个bean
<bean id="xxx" class="com.xxx.xxx" />
3.2. 构造器注入
使用constructor-arg
<!-- 注入引用 --><bean id="xxx" class="com.xxx.xxx"> <constructor-arg ref="yyy" /></bean>
<!-- 注入字面值 --><bean id="xxx" class="com.xxx.xxx"> <constructor-arg value="我是字面值" /></bean>
<!-- 注入集合 --><bean id="xxx" class="com.xxx.xxx"> <constructor-arg> <list> <value>啦啦啦1</value> <value>啦啦啦2</value> <value>啦啦啦3</value> </list> </constructor-arg></bean><bean id="xxx" class="com.xxx.xxx"> <constructor-arg> <list> <ref bean="xxx1" /> <ref bean="xxx2" /> <ref bean="xxx3" /> </list> </constructor-arg></bean>
- list标签、set标签都只是constructor-arg标签的子标签,不能单独存在,若要把list、set单独声明成一个bean,则需使用util命名空间下的util:list、util:set标签。这样list、set、map可以单独存在,并在constructor-arg标签中直接引用。
使用c-命名空间
首先需要在beans标签中加入xmlns:c命名空间。<!-- 注入引用(若构造函数有多个参数) --><bean id="xxx" class="com.xxx.xxx" c:参数名-ref="yyy"/><!-- 注入引用(指定注入到第几个参数中) --><bean id="xxx" class="com.xxx.xxx" c:0-ref="yyy"/><!-- 注入引用(若构造函数只有一个参数) --><bean id="xxx" class="com.xxx.xxx" c:_-ref="yyy"/><!-- 注入字面值 --><bean id="xxx" class="com.xxx.xxx" c:_参数名="啦啦啦"/><bean id="xxx" class="com.xxx.xxx" c:_0="啦啦啦"/><!-- 注入字面值(若构造函数只有一个参数) --><bean id="xxx" class="com.xxx.xxx" c:_="啦啦啦"/>
PS:c命名空间不支持集合装配!
3.3. 属性注入
使用property属性
<bean id="xxx" class="com.xxx.xxx"> <property name="属性名" ref="yyy" /></bean>
使用P命名空间
首先需要在beans标签中引入p命名空间。<bean id="xxx" class="com.xxx.xxx" p:属性名-ref="yyy" />
4. 混合使用JavaConfig中的bean和XML中的bean
4.1. 在JavaConfig中引用另一个javaConfig中的bean
@Configuration@Import({XXXConfig.class,YYYConfig.class})class XXXConfig{ @Bean public A setA(){ return new A(); }}
4.2. 在JavaConfig中引用XML中的bean
@Configuration@ImportResource("classpath:xxx.xml")class XXXConfig{ @Bean public A setA(){ return new A(); }}
4.3. 在XML中引入另一个XML
<beans> <import resource="xxx.xml" /> <bean /></beans>
4.4. 在XML中引入JavaConfig
直接声明一个bean即可:
<bean class="com.xxx.XXXConfig" />
2 0
- Spring速查手册——Bean装配
- spring装配bean——自动装配bean
- Spring装配Bean——Java代码装配bean
- Spring装配Bean——通过配置XML装配bean
- Spring速查手册(二)——Bean的作用域
- Spring框架——bean自动装配
- Spring——装配Bean 02
- spring学习——装配Bean
- Spring实战笔记——装配Bean
- 初学 spring —— bean 装配
- spring实战——装配Bean
- Spring基础—装配bean(一)
- Spring基础—装配bean(二)
- Spring学习笔记—装配Bean
- Spring基础—装配bean(一)
- Spring基础—装配bean(一)
- Spring基础—装配bean(二)
- Spring基础—装配bean(一)
- 499
- js面向对象编程:if中可以使用那些作为判断条件呢?
- 颜色RGB对照表(颜色大全)
- 2017.5.9 积木大赛 思考记录
- Nginx管理工具bat
- Spring速查手册——Bean装配
- java实现comparator排序
- Hibernate系列--(1)
- MindManager中的“线条”怎么改?
- Spark action 操作列表
- 什么是Java bean
- 对象存储Swift
- OAuth2.0认证协议
- 数据结构List实例(四):使用归并排序对单链表进行排序