第四章--Set注⼊详解

针对于不同类型的成员变量,在标签,需要嵌套其他标签
在这里插入图片描述

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第二种方式

第⼀种赋值⽅式存在的问题:
在这里插入图片描述

  1. 配置⽂件代码冗余; 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教程后做的笔记。持续更新…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值