spring学习之自动装配
来源:互联网 发布:原生js实现todo list 编辑:程序博客网 时间:2024/06/05 01:06
上篇文章我们已经讲了IOC和DI的一些基本概念以及 配置bean的两种 方式,其中bean配置还有一些细节性的东西,还是需要我们花点时间找相关的文档去学习了解的,例如null值配置、特殊字符配置和p命名空间等等。接下来,我们开始讲一下bean的自动装配,都将用到前面的知识。
还是先上代码吧:
一个人有名字有车有住址:
public class Person { private Car car; private String name; private Adress adress; public Car getCar() { return car; } public void setCar(Car car) { this.car = car; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Adress getAdress() { return adress; } public void setAdress(Adress adress) { this.adress = adress; } @Override public String toString() { return "Person [car=" + car + ", name=" + name + ", adress=" + adress + "]"; }}
车有品牌和价格:
package com.yixingu.autowire;public class Car { private String brand; private String sprice; public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public String getSprice() { return sprice; } public void setSprice(String sprice) { this.sprice = sprice; } @Override public String toString() { return "Car [brand=" + brand + ", sprice=" + sprice + "]"; }}
住址有城市和街道:
package com.yixingu.autowire;public class Adress { private String city; private String street; @Override public String toString() { return "Adress [city=" + city + ", street=" + street + "]"; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } public Adress(String city, String street) { super(); this.city = city; this.street = street; }}
接下来就是我们的配置文件了:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" xmlns:p="http://www.springframework.org/schema/p"> <bean id="car" class="com.yixingu.autowire.Car"> <property name="brand" value="audi"/> <property name="sprice" value="300000"/> </bean> <bean id="adress" class="com.yixingu.autowire.Adress"> <constructor-arg value="YangJiang" type="String"/> <constructor-arg value="XiTou" type="String"/> </bean> <bean id="person" class="com.yixingu.autowire.Person" p:name="yixingu" autowire="byName"> </bean></beans>
配置文件中用到了属性注入,构造器注入,p命名空间以及今天的自动装配:autowire属性。
自动装配有两种方式:byName和byType。
其中byName是根据bean的set方法属性名来配置的,如果我将配置文件中的id car改成car1,那么autowire将无法为我们自动配置到car。
byType是根据bean的属性类型来配置,如果一个配置文件中有多个同类型的bean时将抛异常,如果我们再配置一个car2,那么运行时将抛出异常。
这也是自动装配的局限性:byName和byType只能选其一;不能选择性自动装配个别bean,一旦使用了autowire属性,那么只能装配所有的属性值,不够灵活。
当然autowire还是有它的优点的,如果我们不考虑上面的局限性的话,autowire还是可以很方便地为我们实现bean的注入的。
阅读全文
0 0
- spring学习之自动装配
- 《Pro Spring》学习笔记之自动装配
- Spring学习笔记之自动装配
- Spring之自动装配
- Spring之自动装配
- Spring之自动装配
- Spring之自动装配
- Spring之自动装配
- Spring Bean装配之自动装配
- Spring 学习 四(自动装配)
- [spring学习之一]自动装配
- Spring学习历程---自动装配
- Spring学习笔记-自动装配
- spring学习笔记(自动装配)
- spring annotation 之 自动装配
- spring之自动装配autowire
- Spring框架之自动装配
- Spring之自动装配注入
- 什么是spring
- 暑期集训之ZOJ
- 判断输入框中输入的是否是数字
- 每日英语阅读(十八)
- UVa 12118 Inspector's Dilemma (欧拉道路)
- spring学习之自动装配
- Spring AOP
- ajax回调函数动态加载的标签里面js事件不执行
- 剑指offer:跳台阶
- CSU
- ASP.NET中的富文本编辑控件(html文本编辑控件)整理
- Unity 从Apex学到的一种提高模块扩展性的方法
- 初步接触HTML5
- CSDN博客悄悄修改后台排名规则?