欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring属性注入

程序员文章站 2022-03-03 12:32:48
...

介绍

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

  • 三种属性注入的方式:

    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>
相关标签: Spring基础