1Spring注入小结

Spring注入小结 (在Application.xml中)


Spring学习笔记 周芋杉2021/5/14


1.基本注入类型注入

注入前的准备

<bean id="#配置文件的唯一标识" class="#Spring工厂将要创建的类的全限名命名">
     <property name="#填写所赋予的变量">
    	#注入值
    </property>
</bean>

JDK类型注入

1.8种基本类型加Stirng

#注入值
<value>#值</value>

2.数组

<list>
	<value>#值1</value>
    <value>#值2</value>
    <value>#值3</value>
</list>

3.set集合

  • set集合是无序的,取出值不会像数组一样有序
  • set集合有泛型约束如set
  • 如果没有泛型约束 set可以装任何类型的值
#有泛型约束 8种基本类型加Stirng
<set>
	<value>#值1</value>
    <value>#值2</value>
    <value>#值3</value>
</set>
#无约束
<set>
	<ref bean #用户自定义类型
     <set #还可存放set类型
</set>

4.list集合

<list>
	<value>#值1</value>
    <value>#值2</value>
</list>
#和set类似
<list>
	<ref bean #用户自定义类型
     <set #还可存放set类型
</list>

5.Map集合

<map>
    #entry代表一个键值对
	<entry>
    	<key>
        <value>#键值</value>#如果Map是字符串泛型则内嵌<value></value>
        </key>
        <value>#值</value>
    </entry>
</map>

6.Properties

​ Properties是一种特殊的Map 键值都是String

<props>
	<prop key="#键1">#直接写值1</prop>
    <prop key="#键2">#直接写值2</prop>
</props>

2.自定义类型注入

方式一

步骤
1. 在实现类中实现自定义的类型
2. 在实现类中提供set和get方法
3. 在配置文件中注入

例如:

实现类MySpringTest:

实现自定义类型UserDAO

	//实现自定义类型 	
	private UserDAO testDao;
	//提供set和get方法
    public UserDAO getTestDao() {
        return testDao;
    }
    public void setTestDao(UserDAO testDao) {
        this.testDao = testDao;
    }

配置文件中注入

<bean id="testDao" class="org.MySpringTest">
        <property name="testDao">
            <bean class="org.UserDAOImpl"/>
        </property>
</bean>

注:在property里的bean class是实现了testDao这个自定义类型,但是要实现这个自定义类的的实现。此处为UserDAO接口的实现类UserDAOImpl

存在的问题

1.配置文件的冗余,如果需要多次使用UserDAO则需要多次使用注入
2.多次创建对象会使得JVM内存紧张

方式二

先实现出自定义类的实现

<bean id="DAO"class="org.UserDAOImpl"/>

在实现类的配置文件里面引用自定义类

<bean id="testDao" class="org.MySpringTest">
    <property name="testDao">
           <ref bean="DAO"/>
        </property>
       
</bean>

实现了只创建一次多次使用节约内存

3.简化写法注入

8种基本类型加Stirng

<bean id="#配置文件的唯一标识" class="#Spring工厂将要创建的类的全限名命名">
     <property name="#填写所赋予的变量" value="#注入值">
</bean>

用户自定义类型

<bean id="#配置文件的唯一标识" class="#Spring工厂将要创建的类的全限名命名">
     <property name="#填写所赋予的变量">
    	<ref bean="#引用的id"/>
    </property>     
</bean>

P命名空间

在使用P命名空间以前要在标头beans加入

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

8种基本类型加Stirng

<bean id="#配置文件的唯一标识" 
      class="#Spring工厂将要创建的类的全限名命名"
      p:#变量名="#值"/>

自定义

<bean id="#配置文件的唯一标识" 
      class="#Spring工厂将要创建的类的全限名命名"
      p:#变量名-ref="#值"/>

4.构造注入

1.普通构造方法

开发步骤:

1.提供有参数构造方法(有参数!)
2.提供配置文件注入

例如:参数构造方法

public class Customer implements Serializable {
    private String name;
    private int age;
    public Customer(String name,int age){
        this.age=age;
        this.name=name;
    }

参数顺序从左到右

在配置文件注入

<bean id="customer" class="org.constructer.Customer">
 	<constructor-arg value="SY"/>
    <constructor-arg value="21"/>  
</bean>

结果为name=SY age=21

2.重载的构造方法

1.不同的参数数量

Spring通过constructor-arg的数量辨别

2.相同的参数数量,Spring通过参数类型判断,引入type

<constructor-arg type="java.lang.String" value="SY"/>
posted on 2021-05-22 17:03  NathenJames  阅读(57)  评论(0编辑  收藏  举报