Spring属性注入

介绍

  • 定义:创建对象时候,向类里面属性里面设置值

  • 三种属性注入的方式:

    1. 有参构造
    2. set方法
  • 在spring框架里面,支持前两种方式
    (1)set方法注入(重点)
    (2)有参数构造注入

有参构造注入属性

  • 原始方法:
    1. 在类里面写有参构造
    2. main方法声明时加入构造参数
  • spring实现:在xml文件中实现第二步
    xml文件:
  <!-- 有参构造注入属性 -->
   1.  <bean id="demo" class="cn.itclass.prosperiy.Test"> 
        <!-- 属性注入 -->
        <constructor-arg name="name" value="张宇" >	</constructor-arg>
    </bean>

public class Test {
	private String name;
	
	//构造
	public Test(String name) {
		this.name=name;
	}
	
	public void show() {
		System.out.println("name=:::"+name);
	}
  1. 对象构造
  2. 属性注入 : name=“” 类里面方法的名称,第二个参数是属性的值

set属性构造

  • 原始方法:
    1. 在类里面写set方法
    2. main方法声明对象
    3. 对象调用set方法
  • spring实现:在xml文件中实现第2.3.步
    1. xml
   1. 类对象的声明
             <bean id="Book" class="cn.itclass.prosperiy.Testset">
             2. 调用set方法设置属性:注意name是属性的名称不是方法中形参的名称
                     name=“”:类里面属性参数(private类型)的名称
                     value=:参数的值
                 -->
                 <property name="bookName" value="平凡的世界"></property>
             </bean>
          
public class Testset {
 	private String bookName;
 	
 	public void setBookName(String book) {
 		this.bookName = book;
 	}

对象属性注入:重点

  • 引入案例:
    有两个类:service和dao,想要在service中调用到dao,必须在service中得到dao对象
    原始做法:在service中声明dao对象,用对象再去调用dao的方法

  • 思想:
    在service中设置一个dao类型的属性,在xml文件中吧dao作为属性注入到service中

  • 具体实现过程:

    1. 在service中把dao作为类型属性
    2. 生成dao类型的属性的set方法
public class UserService {
     	//1 在类中设置Dao属性
     	private UserDao userDao;
     	//2 设置userdao的set方法
     	public void setUserDao(UserDao userDao) {
     		this.userDao = userDao;
     	}
  1. 在配置文件中注入关系:!!
    • 设置dao类型【·作为属性的类】的对象
    • 设置service类型【接收属性的类】对象
    • 属性注入:ref引用dao类型–而不是value类型
   <!--对象注入  -->
               <!-- 首先创建userDao和userService的对象 -->
               <bean id="userDao" class="cn.itclass.prosperiy.UserDao"></bean>
               
               <bean id="userService" class="cn.itclass.prosperiy.UserService">
                   <!-- 对象参数设置 -->
                   <!-- ref引用对象userDao 值是上面UserDao对象的id -->
                   <property name="userDao" ref="userDao"></property>
               </bean>

P名称空间注入

  • 与普通属性注入类似,只是方法不同,以下只写了xml文件内容

xml引入

xmlns:p="http://www.springframework.org/schema/p"



        <!-- P名称空间注入 -->
        <bean id="userYear" class="cn.itclass.prosperiy.UserService" p:userYear="七年"></bean>

复杂类型注入

数组

list集合

map集合

properties类型
::以下是XML中的内容

- 这几种类型作为属性
- xml中实现
        <!-- 复杂类型注入 -->
        <bean id="userServiceF" class="cn.itclass.prosperiy.UserService">
           <!-- 数组 -->
           <property name="arr">
                     <!-- value -->
                    <list>
                         <value></value>
                         <value>ai我家</value>
                    </list>
           </property>
           <!-- map -->
           <property name="map">
                   <map>
                     <entry key="张宇" value="宝"></entry>
                     <entry key="张宇" value="宝"></entry>
                   </map>
           </property>
           
           <!-- list -->
           <property name="list">
                   <list>
                    <value>横刀夺爱</value>
                    <value>横刀夺爱</value>
                    <value>横刀夺爱</value>
                    <value>横刀夺爱</value>
                   </list>
           </property>
           <!-- properties-->
           <property name="properties">
                    <props>
                        <prop key="张宇">你猜我</prop>
                        <prop key="额捶你">尅阿布</prop>
                    </props>
           </property>
        </bean>
发布了15 篇原创文章 · 获赞 7 · 访问量 4171
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章