七.Spring的属性注入的方式-简单String类型

来源:互联网 发布:js e.target 属性 编辑:程序博客网 时间:2024/05/01 23:53

属性注入,顾名思义就是在创建对象的时候给类中的成员属性设置值.

Java中的属性注入(三种)

(1)使用set方法注入
(2)使用有参数构造注入
(3)使用接口注入
Java属性注入

Spring中的属性注入(两种)

在spring框架中只set方法和有参数的构造方的注入,不支持接口方法注入.这里以注入参数为最简单的类型字符串类型String为例子介绍下两种注入方式.关于属性是对象类型和复杂的集合类型的属性见我另外一篇博文.
Spring的属性注入-注入对象,复杂的集合类型属性

1)使用有参数的构造试下你属性注入.

原理:将该Bean交给Spring管理的时候,Spring会反射去执行构造方法.
User.java

package cn.com.yves.spring;public class User {    private String name;    /*使用有参数的构造方法注入属性,要提提提供有参数的构造,不需要提供该属性的set方法.*/    public User(String name) {        this.name = name;    }    public String getName() {        return name;    }}

Application.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">    <!-- 有参数的构造方法注入属性 -->    <bean id="user" class="cn.com.yves.spring.User">        <!-- name属性代表类中的属性名,value代表要给name赋予的值,只支持java中的String类型 -->        <constructor-arg name="name" value="Yves"></constructor-arg>    </bean></beans>

测试方法:

    @Test    public void test() {        // 1 加载spring配置文件,根据配置创建对象        ApplicationContext context = new ClassPathXmlApplicationContext("Application.xml");        // 2 配置文件中的id获取创建的对象        User user = (User) context.getBean("user");        System.out.println(user.getName());    }

结果:
Yves

2)通过set方法来实现属性注入

A.set方法注入String类型属性
User2 .java

package cn.com.yves.spring;public class User2 {    private String name;    /* 使用set方法注入属性要提供属性的set方法 */    public void setName(String name) {        this.name = name;    }    public String getName() {        return name;    }}

Application.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">    <!-- 有参数的构造方法注入属性 -->    <bean id="user" class="cn.com.yves.spring.User">        <!--             name:类里面定义的属性名;             value:设置的具体值,value只支持java中的String类型.         -->        <constructor-arg name="name" value="Yves"></constructor-arg>    </bean></beans>

测试代码:

    @Test    public void test2() {        // 1 加载spring配置文件,根据配置创建对象        ApplicationContext context = new ClassPathXmlApplicationContext("Application.xml");        // 2 配置文件中的id获取创建的对象        User2 user = (User2) context.getBean("user2");        System.out.println(user.getName());    }

结果:
Yves2

spring-属性注入Sting