创建对象的方式
本质就是调用对象的构造函数,不指定为调用无参构造函数
- 通过参数下标构造
<constructor-arg index="0" value="1"></constructor-arg>
- 通过参数名称构造
<constructor-arg name="name" value="111"></constructor-arg>
- 通过参数类型构造
<constructor-arg type="java.lang.String" value="2"></constructor-arg>
多个构造函数时
-
根据参数个数、参数类型、参数名称来匹配(参数个数相同时,使用index匹配时,默认类型为string 类型)
<constructor-arg index="0" type="int" value="1">
可以用c空间来简化下xml
注入对象属性的方式
-
xml 中配置,挑几个特殊的,本质是调用setter方法来进行注入的
- 数组
<property name="books"> <array> <value>四大名著</value> <value>钢铁是怎么炼成的</value> </array> </property>
- list和map
<property name="hobs"> <list> <value>吃饭</value> <value>睡觉</value> </list> </property> <property name="card"> <map> <entry key="身份证" value="123123"/> <entry key="银行卡" value="123123"/> </map> </property>
-
自动装配
两种方式,通过name或者type,本质看下xml上下文有无唯一符合条件的注入值
<bean id="student" class="xxxx.Student" autowire="byName"> </bean>
-
可以用p空间来简化下xml
-
注解注入,两种方式注入,注解在setter方法前就是调用setter方法,在属性前就是调用反射的方法
@value() //注入对应的值 @Autowired // 自动装配, 优先通过type,然后再通过name来检索,可以设置required为false来让检索到的值可以为空 @Qualifier("cat1")// 在自动装配的前提下找到对应名字的autowired,本质是通过type和指定的name来检索context上下文中的有无对应的值 @Resource//相当于Autowired、Qualifier功能的组合,但是不能设置required的值
网友评论