spring各种类型的属性注入

spring test + Junit方式:

pox.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.try2better</groupId>
    <artifactId>spring</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <spring.version>4.3.9.RELEASE</spring.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <!-- spring end -->
    </dependencies>
</project>

Java:

package beans;

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

/*
 * DESCRIPTION : 
 * USER : zhouhui
 * DATE : 2017/8/10 15:49
 */
public class Bean {

    private Integer inte;
    private String str;
    private String[] strArr;
    private Boss boss;
    private List<String> list;
    private Set<String> set;
    private Map<String,Boss> map;
    //Properties和Map的区别是,Properties只能接受key和value都是String
    private Properties properties;

    public Integer getInte() {
        return inte;
    }

    public void setInte(Integer inte) {
        this.inte = inte;
    }

    public String getStr() {
        return str;
    }

    public void setStr(String str) {
        this.str = str;
    }

    public String[] getStrArr() {
        return strArr;
    }

    public void setStrArr(String[] strArr) {
        this.strArr = strArr;
    }

    public Boss getBoss() {
        return boss;
    }

    public void setBoss(Boss boss) {
        this.boss = boss;
    }

    public List<String> getList() {
        return list;
    }

    public void setList(List<String> list) {
        this.list = list;
    }

    public Set<String> getSet() {
        return set;
    }

    public void setSet(Set<String> set) {
        this.set = set;
    }

    public Map<String, Boss> getMap() {
        return map;
    }

    public void setMap(Map<String, Boss> map) {
        this.map = map;
    }

    public Properties getProperties() {
        return properties;
    }

    public void setProperties(Properties properties) {
        this.properties = properties;
    }

    @Override
    public String toString() {
        return "Bean{" +
                "inte=" + inte +
                ", str=‘" + str + ‘\‘‘ +
                ", strArr=" + Arrays.toString(strArr) +
                ", boss=" + boss +
                ", list=" + list +
                ", set=" + set +
                ", map=" + map +
                ", properties=" + properties +
                ‘}‘;
    }
}

实体:

package beans;

/*
 * DESCRIPTION : 
 * USER : zhouhui
 * DATE : 2017/8/10 11:19
 */
public class Boss {

    private String name;
    private Integer age;
    private Boolean isMale;

    public Boss() {
    }

    public Boss(String name, Integer age, Boolean isMale) {
        this.name = name;
        this.age = age;
        this.isMale = isMale;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Boolean getMale() {
        return isMale;
    }

    public void setMale(Boolean male) {
        isMale = male;
    }

    @Override
    public String toString() {
        return "Boss{" +
                "name=‘" + name + ‘\‘‘ +
                ", age=" + age +
                ", isMale=" + isMale +
                ‘}‘;
    }
}

spring 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">

    <import resource="bean.xml"/>

    <bean id="boss" class="beans.Boss">
        <property name="age" value="10"/>
        <property name="male" value="false"/>
        <property name="name" value="zhouhui"/>
    </bean>

    <bean id="boss2" class="beans.Boss" scope="singleton">
        <constructor-arg name="age" value="11"/>
        <constructor-arg name="name" value="zhouhui2"/>
        <constructor-arg name="isMale" value="true"/>
    </bean>

    <bean id="boss3" class="beans.Boss">
    </bean>

    <bean id="bossService" class="impl.BossServiceImpl">
        <property name="boss" ref="boss2"></property>
    </bean>

</beans>

bean 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">

    <!-- boss对象的bean -->
    <bean id="myBoss" class="beans.Boss">
        <property name="age" value="10"/>
        <property name="male" value="false"/>
        <property name="name" value="zhouhui"/>
    </bean>

    <bean id="bean" class="beans.Bean">
        <!-- private Boss boss; -->
        <property name="boss" ref="myBoss"/>

        <!-- private Integer inte; -->
        <property name="inte" value="1"/>

        <!-- private String str; -->
        <property name="str" value="hello world"/>

        <!-- private String[] strArr; -->
        <property name="strArr">
            <list>
                <value>NO.1</value>
                <value>NO.2</value>
                <value>NO.3</value>
            </list>
        </property>

        <!-- private List<String> list; -->
        <property name="list">
            <list>
                <value>INDEX 1</value>
                <value>INDEX 2</value>
                <value>INDEX 3</value>
            </list>
        </property>

        <!-- private Map<String,Boss> map; -->
        <property name="map">
            <map>
                <entry key="entity 1" value-ref="myBoss"></entry>
                <entry key="entity 2" value-ref="myBoss"></entry>
                <entry key="entity 3" value-ref="myBoss"></entry>
            </map>
        </property>

        <!-- private Set<String> set; -->
        <property name="set">
            <set>
                <value>set 1</value>
                <value>set 2</value>
                <value>set 3</value>
            </set>
        </property>

        <!-- private Properties properties; -->
        <property name="properties">
            <props>
                <prop key="key1">value1</prop>
                <prop key="key2">value2</prop>
                <prop key="key3">value3</prop>
            </props>
        </property>
    </bean>
</beans>

测试类:

package test;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.annotation.Resource;

import beans.Bean;
import beans.Boss;
import business.BossService;

/*
 * DESCRIPTION :
 * USER : zhouhui
 * DATE : 2017/8/10 11:25
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath*:spring-content.xml" })
public class TestSpringBeans {

    @Resource(name = "boss3")
    private Boss boss;
    @Autowired
    private Boss boss2;
    @Autowired
    private Boss boss3;

    @Autowired
    private BossService bossService;
    @Autowired
    private Bean bean;

    /**
     * @Autowired 是根据bean的id,完全匹配注入
     * @Resource(name = "boss3") 指定nid匹配注入
     */
    @org.junit.Test
    public void test(){
        System.out.println("============test===============");
        System.out.println(boss.toString());
        System.out.println(boss2.toString());
        System.out.println(boss3.toString());
        //默认是单例的,如果需要是多例的需要设置scope="singleton"
        System.out.println(boss == boss2);
        System.out.println("=============test==============");
    }

    /**
     * 测试接口的注入,必须在xml种指定实现,不然Java中不予许对interface进行@Autowired
     */
    @Test
    public void testInterface(){
        System.out.println("============testInterface===============");
        System.out.println(bossService.getBossEntity());
        System.out.println("============testInterface===============");
    }

    /**
     * 对数组 集合等各种类型的属性进行注入
     */
    @Test
    public void testBean(){
        System.out.println("===========testBean================");
        System.out.println(bean);
        System.out.println("===========testBean================");
    }
}

执行结果:

============test===============
Boss{name=‘null‘, age=null, isMale=null}
Boss{name=‘zhouhui2‘, age=11, isMale=true}
Boss{name=‘null‘, age=null, isMale=null}
false
=============test==============

============testInterface===============
Boss{name=‘zhouhui2‘, age=11, isMale=true}
============testInterface===============

===========testBean================
Bean{inte=1, str=‘hello world‘, strArr=[NO.1, NO.2, NO.3], boss=Boss{name=‘zhouhui‘, age=10, isMale=false}, list=[INDEX 1, INDEX 2, INDEX 3], set=[set 1, set 2, set 3], map={entity 1=Boss{name=‘zhouhui‘, age=10, isMale=false}, entity 2=Boss{name=‘zhouhui‘, age=10, isMale=false}, entity 3=Boss{name=‘zhouhui‘, age=10, isMale=false}}, properties={key3=value3, key2=value2, key1=value1}}
===========testBean================
时间: 2024-10-10 08:37:59

spring各种类型的属性注入的相关文章

六 Spring的配置:属性注入

Spring的属性注入: 构造方法的属性注入 set方法的属性注入 构造方法的属性注入: set方法的属性注入: set方法注入对象: 1 package com.itheima.spring.demo4; 2 3 public class Employee { 4 private String name; 5 private Car2 car2; 6 7 public void setName(String name) { 8 this.name = name; 9 } 10 public v

spring学习之集合属性注入

spring中对象之间的相互依赖关系是通过applicationContext.xml来管理的,因此集合属性注入的重点也放在applicationContext.xml的配置之中. 下面是一个完整的各种集合属性注入的例子 目录结构: 实体类 public class Students { private String sid; private String sname; private int age; public Students() { super(); } public Students

spring IOC快速入门,属性注入,注解开发

我们使用spring框架也会使用到配置文件,我们需要在src下创建一个关于spring的配置文件,一般情况名称叫applicationContext.xml 基本约束: <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> IOC快速入门 inversion of Controller

Spring boot将配置属性注入到bean类中

一.@ConfigurationProperties注解的使用 看配置文件,我的是yaml格式的配置: // file application.yml my: servers: - dev.bar.com - foo.bar.com - jiaobuchong.com 1 2 3 4 5 6 下面我要将上面的配置属性注入到一个Java Bean类中,看码: import org.springframework.boot.context.properties.ConfigurationProper

spring基于注解的属性注入

1.@Autowired 通过类型进行匹配(主流的方式),当容器中出现两个同类型的bean时会报NoUniqueBeanDefinitionException的异常.这时有两种方法, 第一种 如果有两个bean放弃注入,@Autowired 有一个required属性.fase 表示抛出异常放弃注入.默认为true 第二种 通过@Qualifier指定注入bean的名称 如下: @Autowired @Qualifier("userDaoImpl") private UserDao d

spring的两种属性注入方式setter注入和构造器注入或者自动注入

1.这里的属性自动注入,与注解配置bean是两回事.这里的自动注入,指的是bean属性的自动注入. bean属性自动注入,包括byNAme和ByType两码事. 2.所有的applicationContext都实现了resourceLoader接口,通过resourceLoader可以获得resource实例,进而可以访问资源文件. 所以要在类中获得resource实例,必须实现applicationContextAware接口.

[原创]java WEB学习笔记98:Spring学习---Spring Bean配置及相关细节:如何在配置bean,Spring容器(BeanFactory,ApplicationContext),如何获取bean,属性赋值(属性注入,构造器注入),配置bean细节(字面值,包含特殊字符,引用bean,null值,集合属性list map propert),util 和p 命名空间

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

Spring中集合类型属性注入

我们都知道如何去注入普通属性的值,非常简单,那么我们如何去注入开发中常见的集合类型的属性了,别急,往下看. 这里将介绍如何给Map list set Array Properties 这些属性注入值. 1.创建一个类:员工类Employee package cn.entity; /** * 员工类 * * @author hyj * */ public class Employee { //员工年龄 private Integer age; //员工姓名 private String name;

Spring笔记②--各种属性注入

Ioc 反转控制 反转资源获取的方向 分离接口与实现 采用工厂模式 采用反转控制 ? Di 依赖注入 依赖容器把资源注入 ? 配置bean 通过全类名(反射) 配置形式:基于xml方式 Ioc容器的beanFactory&ApplicationContext 依赖注入的方式:属性注入,构造器注入 ? ? Bean必须要有一个无参的构造函数 Class:bean的全类名,通过反射的方式在IOC容器中创建bean,所以要求bean中必须有无参的构造函数 id :bean 的标示,id唯一 ? app