Spring(三)之自动装配、表达式
来源:互联网 发布:网络歌曲想问问你慢四 编辑:程序博客网 时间:2024/06/05 06:05
- 自动装配
- 例子
- byName
- byType
- 将bean排除在自动装配之外
- 依赖检查
- 例子
- spring表达式
自动装配
自动装配(autowire)协作者
Spring IoC容器可以自动装配(autowire)相互协作bean之间的关联关系。因此,如果可能的话,可以自动让Spring通过检查BeanFactory中的内容,来替我们指定bean的协作者(其他被依赖的bean)。
autowire一共有五种类型。由于autowire可以针对单个bean进行设置,因此可以让有些bean使用autowire,有些bean不采用。autowire的方便之处在减少或者消除属性或构造器参数的设置,这样可以给我们的配置文件会更精简!
例子:
autowire.Restaurant
package autowire;public class Restaurant { private Waiter wt; public Restaurant() { System.out.println("Restaurant无参构造"); } public Waiter getWt() { return wt; } public void setWt(Waiter wt) { System.out.println("Restaurant的set方法。。。。"); this.wt = wt; } @Override public String toString() { return "Restaurant [wt=" + wt + "]"; }}
autowire.Waiter
package autowire;public class Waiter { public Waiter() { System.out.println("waiter的无参构造。。"); }}
byName
根据byName查找xml文件
<bean id="wt" class="autowire.Waiter"></bean><bean id="rest" class="autowire.Restaurant" autowire="byName"></bean>
* 结果:*
waiter的无参构造。。
Restaurant无参构造
Restaurant的set方法。。。。
Restaurant [wt=autowire.Waiter@43814d18]
byName:查找id等于属性名的bean,然后调用set完成注入
如果找不到对应的bean,会注入null;
注意:a.有参构造
b.有set方法
byType
根据byType查找xml文件
<bean id="wt1" class="autowire.Waiter"></bean> <bean id="rest" class="autowire.Restaurant" autowire="byType" ></bean>
* 结果:*
waiter的无参构造。。
Restaurant无参构造
Restaurant的set方法。。。。
Restaurant [wt=autowire.Waiter@3701eaf6]
byType:查找与属性类型一致的bean,然后set方法注入
如果找不到对应的bean会注入null;
找到多个报错
注意:a.有参构造
b.有set方法
注意:容器默认情况下,禁止自动装配。如果直接使用property和constructor-arg注入依赖的话,那么将总是覆盖自动装配。
将bean排除在自动装配之外
采用XML格式配置bean时,元素的 autowire-candidate属性可被设为false
使用对bean名字进行模式匹配来对自动装配进行限制
- 在元素的’default-autowire-candidates‘属性中进行设置。比如,将自动装配限制在名字以’Repository’结尾的bean,那么可以设置为”*Repository”。
依赖检查
检查bean定义中实际属性值的设置.
依赖检查默认为not,它有几种不同的使用模式,在xml配置文件中,可以在bean定义中为dependency-check属性使用以下几种值:
spring表达式
读取bean或者集合的属性值。语法类似el表达式
使用spring表达式读取其它的bean的属性值。
#{eb.name}:读取id等于eb的bean的name属性值。
#{eb.cities[0]}:读取id等于eb的bean的cities属性值(cities是一个List,读取的是下标等于0的元素的值)。
cities属性值(cities是一个List,读取的是下标等于0的元素的值)。
#{eb.score.math}:读取id等于eb的bean的
score属性值(score是一个Map,读取的是key等于math的value值)。
#{config.pagesize}:读取id等于config的
bean的pagesize属性值(pagesize是properties中的key)。
<bean id="sb" class="basic.SomeBean"> <property name="name" value="#{eb.name}"/> <property name="city" value="#{eb.cities[0]}"/> <property name="score" value="#{eb.score.math}"/> <property name="pageSize" value="#{config.pagesize}"/> </bean>
- Spring(三)之自动装配、表达式
- Spring实战-使用表达式装配(三)
- Spring框架自动装配 Bean(三)
- Spring框架学习(三)自动装配
- spring基础-Bean的装配方式(三)自动装配
- Spring之自动装配
- Spring之自动装配
- Spring之自动装配
- Spring之自动装配
- Spring之自动装配
- spring入门(8)--装配Bean之自动装配
- Spring Bean装配之自动装配
- spring annotation 之 自动装配
- spring之自动装配autowire
- Spring框架之自动装配
- Spring之自动装配注入
- spring学习之自动装配
- 5.1.Spring之自动装配
- 随机数和数组
- Spring(二)之配置
- MySQL宽字节注入漏洞分析
- linux下 消息中间件ActiveMQ整合spring笔记二 发消息
- Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果
- Spring(三)之自动装配、表达式
- 内部类
- Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果
- VS2010打开2013项目
- 刷CCF的算法题(第三天)
- edittext添加内容发生变化的监听
- [LeetCode]230. Kth Smallest Element in a BST
- Android 可拖拽的GridView效果实现, 长按可拖拽和item实时交换
- linux中的iptables服务