属性注入的2种方式
来源:互联网 发布:mac plsql developer 编辑:程序博客网 时间:2024/06/12 01:06
set方法注入;构造方法注入
(一)set方法注入
使用最多的一种注入方式,非常简单,容易掌握
<bean id="test1" class="com.Test"> <property name="age" value="20"></property> <property name="name" value="Richard"></property> </bean>
(1)需要使用bean标签的property子标签
(2)property标签一定有name属性,通过name属性,找到并调用对应的set方法,为属性注入值。
property标签的name属性是age,会去调用setAge(args)方法;
property标签的name属性是name,会去调用setName(args)方法
(二)构造方法注入
Person类
public class Person { private String name; private Double salary; private Dept dept; private int age; //不用写set方法了 public Person() { } public Person(String name, Double salary, Dept dept, int age) { this.name = name; this.salary = salary; this.dept = dept; this.age = age; }}
(1)配置bean,constructor-arg标签只有value属性:
<bean id="person1" class="com.Person"> <constructor-arg value="张三"></constructor-arg> <constructor-arg value="2500"></constructor-arg> <constructor-arg ref="dept1"></constructor-arg> <constructor-arg value="22"></constructor-arg> </bean>
①有4个constructor-arg标签,会调用带4个参数的构造器去创建对象。
②倘若找不到对应的构造器,会抛出异常。例如:我们需要4参构造器,但目标类中没有4参构造器,此时抛出异常
③不再是调用无参构造器,因此不写无参构造器也能正常运行,还是建议写无参构造器。
④只有value属性,没有其他的约束条件,因此:
第一个constructor-arg标签与构造器的第一个参数对应,
第n个constructor-arg标签与构造器的第n个参数对应
⑤由第4点可知:constructor-arg标签的顺序必须和构造器的参数列表一一对应,否则抛出异常
(2)配置bean,constructor-arg标签有value+index属性
<bean id="person1" class="com.Person"> <constructor-arg ref="dept1" index="2"></constructor-arg> <constructor-arg value="张三" index="0"></constructor-arg> <constructor-arg value="22" index="3"></constructor-arg> <constructor-arg value="2500" index="1"></constructor-arg> </bean>
index=”0”:与构造器的第1个参数对应。
index=”1”:与构造器的第2个参数对应。
……
(3)配置bean,constructor-arg标签有value+name属性
public Person(String name1, Double salary2, Dept dept3, int age4) { super(); this.name = name1; this.salary = salary2; this.dept = dept3; this.age = age4; }
<bean id="person1" class="com.Person"> <constructor-arg value="张三" name="name1"></constructor-arg> <constructor-arg value="2500" name="salary2"></constructor-arg> <constructor-arg ref="dept1" name="dept3"></constructor-arg> <constructor-arg value="22" name="age4"></constructor-arg> </bean>
name属性和构造器的形参名称一一对应
(4)配置bean, constructor-arg标签有value+type属性
<bean id="person1" class="com.Person"> <constructor-arg value="张三" type="java.lang.String"></constructor-arg> <constructor-arg value="2500" type="java.lang.Double"></constructor-arg> <constructor-arg ref="dept1" type="com.Dept"></constructor-arg> <constructor-arg value="22" type="int"></constructor-arg> </bean>
如果2个参数的数据类型相同,就按顺序注入。代码如下:
public class Student { private String name; private String sex; public Student() { } public Student(String name, String sex) { this.name = name; this.sex = sex; }}
<bean id="student1" class="Student"> <!-- 为第一个String类型的参数name注值--> <constructor-arg value="张三" type="java.lang.String"></constructor-arg> <!-- 为第二个String类型的参数sex注值--> <constructor-arg value="男" type="java.lang.String"></constructor-arg> </bean> <bean id="student2" class="Student"> <!-- 为第一个String类型的参数name注值--> <constructor-arg value="男" type="java.lang.String"></constructor-arg> <!-- 为第二个String类型的参数sex注值--> <constructor-arg value="张三" type="java.lang.String"></constructor-arg> </bean>
构造注入比较繁琐,细节也较多,使用较少;Set方法注入,非常简单,容易理解,是最常用的方式
- 属性注入的2种方式
- Spring注入值的2种方式:属性注入和构造注入
- Spring属性注入的两种方式
- Spring三种注入属性的方式
- Spring属性注入的两种方式
- 属性注入的三种方式
- Spring属性注入的方式
- Spring中属性注入的几种方式以及复杂属性的注入
- 注入属性的三种方式及其比较
- Spring通过@Value注解注入属性的几种方式
- Spring通过@Value注解注入属性的几种方式
- Spring通过@Value注解注入属性的几种方式
- Spring通过@Value注解注入属性的几种方式
- Java属性值注入的三种方式
- spring给bean注入属性的三种方式
- Spring:属性注入的方式有三种
- Spring中属性注入的方式
- 命名空间p方式的属性注入
- Java SE菜鸟之泛型
- 关于AndroidImageSlider的使用
- hdu 2041 超级楼梯
- java高级特性之--抽象类和接口
- MySQL-索引
- 属性注入的2种方式
- STL-序列式容器-vector详解
- Java SE菜鸟之异常
- Linux下mysql数据库备份
- nyoj 盖伦的告白(线段树||双端队列)
- Mac jdk 1.7 安装 下载
- Generative Adversarial Nets(译)
- 9打开新窗口window.open和window.close
- [JAVA]POI各Jar包的作用