spring属性注入

1,set方法注入

(1)对于值类型的属性:

在对象中一定要有set方法

package com.songyan.demo1;

import com.songyan.injection.Car;

/**
 * 要创建的对象类
 * @author sy
 *
 */
public class User {
private String name;
private int age ;/**
 * 重写toString方法在输出对象时将属性值输出
 */
@Override
    public String toString() {

        return "name:"+this.name+",age:"+this.age;
    }
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}

}

在配置文件中进行配置

<!--在user对象中为属性名为name的属性赋值为“tom”  -->
<property name="name" value="tom"></property>
<property name="age" value="18"></property>
</bean>

测试

ApplicationContext applicationContext=new ClassPathXmlApplicationContext("com/songyan/injection/beans5.xml");
    User user=(User)applicationContext.getBean("user");
    System.out.println(user);

(2)对于引用类型的属性

package com.songyan.injection;

public class Car {
    private String name;
    private String color;
    @Override
    public String toString() {

        return "【carname:"+this.name+",carcolor:"+this.color+"】";
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }

}
package com.songyan.demo1;

import com.songyan.injection.Car;

/**
 * 要创建的对象类
 * @author sy
 *
 */
public class User {
private String name;
private int age ;
private Car car;

public Car getCar() {
    return car;
}
public void setCar(Car car) {
    this.car = car;
}
/**
 * 重写toString方法在输出对象时将属性值输出
 */
@Override
    public String toString() {

        return "name:"+this.name+",age:"+this.age+",car:"+this.car;
    }
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}

}
package com.songyan.injection;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.songyan.demo1.User;

public class Client {
public static void main(String[] args) {
    ApplicationContext applicationContext=new ClassPathXmlApplicationContext("com/songyan/injection/beans5.xml");
    User user=(User)applicationContext.getBean("user");
    System.out.println(user);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
    <!-- 引用类型的属性注入需要先将属性配置 -->
    <bean name="car" class="com.songyan.injection.Car">
        <property name="name" value="宝马"></property>
        <property name="color" value="red"></property>
    </bean>
    <!--set 方法注入值类型 -->
    <bean name="user" class="com.songyan.demo1.User">
        <!--在user对象中为属性名为name的属性赋值为“tom” -->
        <property name="name" value="tom"></property>
        <property name="age" value="18"></property>
        <!--引用类型的赋值使用ref属性 -->
        <property name="car" ref="car"></property>
    </bean>

</beans>

2,构造方法注入

package com.songyan.injection;

public class Car {
    private String name;
    private String color;

    // 通过构造函数对属性赋值
    public Car(String name, String color) {
        super();
        this.name = name;
        this.color = color;
    }

    public Car() {

    }

    @Override
    public String toString() {

        return "【carname:" + this.name + ",carcolor:" + this.color + "】";
    }

}
package com.songyan.demo1;

import com.songyan.injection.Car;

/**
 * 要创建的对象类
 * @author sy
 *
 */
public class User {
private String name;
private int age ;
private Car car;

/**
 * 通过构造函数对属性赋值
 * @param name
 * @param age
 * @param car
 */
public User(String name, int age, Car car) {
    super();
    this.name = name;
    this.age = age;
    this.car = car;
}
public User()
{

}

/**
 * 重写toString方法在输出对象时将属性值输出
 */
@Override
    public String toString() {

        return "name:"+this.name+",age:"+this.age+",car:"+this.car;
    }

}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
    <!-- 引用类型的属性注入需要先将属性配置 -->
    <bean name="car" class="com.songyan.injection.Car">
        <constructor-arg name="name" value="baoma"></constructor-arg>
        <constructor-arg name="color" value="red"></constructor-arg>
    </bean>
    <!--构造方法注入值类型 -->
    <bean name="user" class="com.songyan.demo1.User">
        <!--在user对象中为属性名为name的属性赋值为“tom” -->
        <constructor-arg name="name" value="tom"></constructor-arg>
        <constructor-arg name="age" value="18"></constructor-arg>
        <constructor-arg name="car" ref="car"></constructor-arg>

    </bean>

</beans>
package com.songyan.injection;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.songyan.demo1.User;

public class Client {
public static void main(String[] args) {
    ApplicationContext applicationContext=new ClassPathXmlApplicationContext("com/songyan/injection/beans5.xml");
    User user=(User)applicationContext.getBean("user");
    System.out.println(user);
}
}

3,p名称空间注入

4,spel注入

5,复杂类型注入

package com.songyan.injection;

public class Car {
    private String name;
    private String color;

    // 通过构造函数对属性赋值
    public Car(String name, String color) {
        super();
        this.name = name;
        this.color = color;
    }

    public Car() {

    }

    @Override
    public String toString() {

        return "【carname:" + this.name + ",carcolor:" + this.color + "】";
    }

}
package com.songyan.complex;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;

public class Complex {
    private Object[] obj;//数组类型注入
    private List list;//list类型注入
    private Map map;//map类型注入
    private Properties properties;//文件类型注入

    @Override
    public String toString() {

        return "array:"+Arrays.toString(obj)+"    \nlist:"+this.list+"  \nproperties:"+this.properties+"\nmap:"+this.map;
    }
    public Object[] getObj() {
        return obj;
    }
    public void setObj(Object[] obj) {
        this.obj = obj;
    }
    public List getList() {
        return list;
    }
    public void setList(List list) {
        this.list = list;
    }
    public Map getMap() {
        return map;
    }
    public void setMap(Map map) {
        this.map = map;
    }
    public Properties getProperties() {
        return properties;
    }
    public void setProperties(Properties properties) {
        this.properties = properties;
    }

}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
    <!-- 引用类型的属性注入需要先将属性配置 -->
    <bean name="car" class="com.songyan.injection.Car">
        <constructor-arg name="name" value="baoma"></constructor-arg>
        <constructor-arg name="color" value="red"></constructor-arg>
    </bean>

    <bean name="complex" class="com.songyan.complex.Complex">
    <!--数组类型-->
        <!--数组中只有一个值类型  -->
        <!-- <property name="obj" value="tom"></property> -->
        <!--数组中只有一个引用类型  -->
        <!-- <property name="obj" ref="car"></property> -->
        <!--数组中有多个值  -->
         <property name="obj" >
             <array>
                 <value>tom</value>
                 <value>jack</value>
                 <ref bean="car" />
             </array>
         </property>
    <!--map类型  -->
    <property name="map">
        <map>
            <entry key="name" value="zhangsan"></entry>
            <entry key="car" value-ref="car"></entry>
        </map>
    </property>
    <!--list类型  -->
        <!--一个值  -->
        <!-- <property name="list" value="jack"></property> -->
        <!--多个值  -->
        <property name="list">
            <list>
                <value>jack1</value>
                <value>jack2</value>
                <ref bean="car"/>
            </list>
        </property>

    <!--properties  -->
    <property name="properties">
        <props>
            <prop key="name">user</prop>
            <prop key="pass">123</prop>
            <prop key="id">192.168.1.1</prop>
        </props>
    </property>
    </bean>

</beans>
package com.songyan.complex;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.songyan.demo1.User;

public class Cliect {
public static void main(String[] args) {
    ApplicationContext applicationContext=new ClassPathXmlApplicationContext("com/songyan/complex/beans.xml");
    Complex complex=(Complex)applicationContext.getBean("complex");
    System.out.println(complex);
}
}

原文地址:https://www.cnblogs.com/excellencesy/p/9129578.html

时间: 2024-11-15 09:48:25

spring属性注入的相关文章

Spring属性注入的方式

Spring的属性注入主要有三种: 1.setter方式注入 2.构造方法注入 3.注解注入,注解注入又分为: ①java annotation ②spring annitation 其中第三种中的java annotation是我们推荐使用的方法. 下面就来一一介绍这些注入方式的使用方法: setter方式注入步骤: ①首先在拥有属性的类中建立属性的set方法. ②在配置文件中使用property标签来注入. 构造方法方式注入步骤: ①创建属性所在的类创建构造方法,同时必须把默认的空构造方法也

Spring属性注入、构造方法注入、工厂注入以及注入参数(转)

Spring 是一个开源框架. Spring 为简化企业级应用开发而生(对比EJB2.0来说). 使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能.Spring 是一个 IOC(DI) 和 AOP 容器框架. 具体描述 Spring:轻量级:Spring 是非侵入性的 - 基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API控制反转(依赖注入) (IOC----inverse of control .DI --- dependenc

Spring学习之路(一)spring属性注入

1.编写类 public class Bean3 { private String userName; //toString()下面的一个方法 public Bean3(String userName) { this.userName = userName; } public void text(){ System.out.println("bean3-----------" + userName); } } 2.配置文件 <!-- 属性注入 --> <bean id

Spring属性注入的注解

使用@Autowired进行自动注入 @Autowired默认按照类型进行注入 -如果存在两个相同Bean类型相同,则按照名称注入 @Autowired注入时可以针对成员变量或者set方法 通过@Autowired的required属性,设置一定要找到匹配的Bean 使用@Qualifier指定注入Bean的名称 使用Qualifier指定Bean名称后,注解Bean必须指定相同名称 Spring提供对JSR-250中定义@Resource标准注解的支持 普通数据类型的属性注入 @Value("

spring属性注入方式

一.使用有参构造注入属性 配置文件 constructor-arg标签是需注入属性的名字 User类 生成了User的有参构造函数 测试类 结果 打印出了name属性的值 二.使用set方法注入属性 配置文件 property标签的name为注入属性的名字 User类 测试类 结果

Spring属性注入的XML配置

1.简单bean配置 配置bean的简单属性,基本数据类型和String. <bean id="user"   class="com.rk.entity.User"> <property name="age"value="60"></property> <propertyname="name" value="RK"></propert

JAVAEE——spring01:介绍、搭建、概念、配置详解、属性注入和应用到项目

一.spring介绍 1.三层架构中spring位置 2.spring一站式框架 正是因为spring框架性质是属于容器性质的. 容器中装什么对象就有什么功能.所以可以一站式. 不仅不排斥其他框架,还能帮其他框架管理对象. aop支持.ioc思想.spring jdbc.aop 事务.junit 测试支持 二.spring搭建 1.导包 日志包:com.springsource.org.apache.commons.logging-1.1.1.jar 可选:com.springsource.or

Spring2.5学习2.2_编码剖析Spring依赖注入原理

为了便于理解Spring属性注入,这里来模拟Spring容器是如何实现将PersonDaoBean注入到PersonServiceBean的. 所需jar包:下载地址http://download.csdn.net/detail/jeofey/8747927 PersonDaoBean.java [java] view plaincopy package xjj.dao.impl; import xjj.dao.PersonDao; public class PersonDaoBean impl

spring-boot实战【05】:Spring Boo多环境配置及配置属性注入到对象

项目工程结构: 配置文件application.properties文件 com.yucong.blog.name=yucong com.yucong.blog.title=Spring Boot Course com.yucong.blog.desc=${com.yucong.blog.name} is learing ${com.yucong.blog.title} # 随机字符串 com.yucong.blog.value=${random.value} # 随机int com.yucon