针对于不同类型的成员变量,在标签,需要嵌套其他标签
1.JDK内置类型
1.1 String+8种基本类型
<value>suns</value>
1.2 数组
<list>
<value>aaa</value>
<value>ddd</value>
<value>eee</value>
</list>
1.3 set集合
//set集合无序且过滤掉重复数据
//这里规定set泛型是String :set<Stirng> tels;
<set>
<value>11111</value>
<value>112222</value>
</set>
//这里set没有泛型 set tels;
<set>
<value>11442</value>
<ref bean=""/> //后面会讲到ref
</set>
1.4 list集合
//可重复且有序
//这里规定list泛型是String list<Stirng> tels;
<list>
<value>11111</value>
<value>2222</value>
</list>
//这里规定list没有泛型 list tels;
<list>
<value>11442</value>
<ref bean=""/>
</list>
1.5Map集合
由键值对组成
注意:
1. map -- entry -- key有特定的标签 <key></key>
2.值根据对应类型选择对应类型的标签
<map>
<entry>
<key><value>suns</value></key> //key
<value>3434334343</value>//值
</entry>
<entry>
<key><value>chenyn</value></key> //key
<ref bean=""/> //值
</entry>
</map>
1.6 Properties
1.Properties类型 特殊的Map key=String value=String
<props>
<prop key="key1">value1</prop>//每一个prop对应一个键值对
<prop key="key2">value2</prop>
</props>
1.7 复杂的JDK类型 (Date)
用得不多,需要程序员⾃定义类型转换器,处理。
2.⽤户⾃定义类型(对象)
2.1 第⼀种⽅式
1.为成员变量提供set get⽅法
2.配置⽂件中进⾏注⼊(赋值)
=================================
1.public class UserServiceImpl implements UserService {
private UserDao userDao;
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}
2.
<bean id="userService" class="xxxx.UserServiceImpl">
<property name="userDAO"> //成员变量private UserDao userDao的userDao
<bean class="xxx.UserDAOImpl"/> 只有一个引用它的所以不要id值也行
</property>
</bean>
2.2第二种方式
第⼀种赋值⽅式存在的问题:
- 配置⽂件代码冗余; 2.被注⼊的对象(UserDAO),多次创建,浪费(JVM)内存资源
第二种方式:
1.为成员变量提供set get⽅法
2.配置⽂件中进⾏配置
<bean id="userDAO" class="xxx.UserDAOImpl"/>
<!--把冗余的那段代码写在上面 用ref引用id值,这样userDAO只创建了一次-->
<bean id="userService" class="xxx.UserServiceImpl">
<property name="userDAO"> <!--成员变量private UserDao userDao的userDao -->
<ref bean="userDAO"/> <!--ref:引用id的值 -->
</property>
</bean>
3.Set注⼊的简化写法
3.1基于属性简化
JDK类型注⼊:
<property name="name">
<value>suns</value>
</property>
简化:
<property name="name" value="suns"/>
注意:value属性 只能简化 8种基本类型+String 注⼊标签
用户自定义类型:
<bean id="userDAO" class="xxx.UserDAOImpl"/>
<bean id="userService" class="xx.UserServiceImpl">
<property name="userDAO">
<ref bean="userDAO"/>
</property>
</bean>
简化:
* <bean id="userDAO" class="xxx.UserDAOImpl"/>
<bean id="userService" class="xx.UserServiceImpl">
<property name="userDAO" ref ="userDAO"/>
</bean>
<!-- name里的userDAO是java类UserServiceImpl中的成员变量,ref中的userDAO是引用的*行的对象id>
3.2基于p命名空间简化
1.JDK类型注⼊
<bean id="person" class="xxxx.Person">
<property name="name">
<value>suns</value>
</property>
</bean>
简化后:
<bean id="person"class="xxx.Person" p:name="suns" />
注意:value属性 只能简化 8种基本类型+String 注⼊标签
2.⽤户⾃定义类型
<bean id="userDAO" class="xxx.UserDAOImpl"/>
<bean id="userService" class="xx.UserServiceImpl">
<property name="userDAO">
<ref bean="userDAO"/>
</property>
</bean>
简化后:
<bean id="userDAO" class="xxx.UserDAOImpl"/>
<bean id="userService"class="xxx.UserServiceImpl" p:userDAO-ref="userDAO"/>
本系列文章从Spring5原理开始深入浅出,从工厂特性=>依赖注入–IOC=>AOP编程=>Spring事务=>纯注解开发。本文来自观看B站孙帅Spring教程后做的笔记。持续更新…