Spring4 In Action-3.5.1-@PropertySource运行时注入值

Posted 第二天半

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring4 In Action-3.5.1-@PropertySource运行时注入值相关的知识,希望对你有一定的参考价值。

Spring4 In [email protected]运行时注入值

代码链接:

接口:

package com.zte.sound.service.bean;
/**
 * 光盘 
 */
public interface CompactDisc {
    public void play();
}

 

实现类:

package com.zte.sound.service.bean.imp;

import org.springframework.stereotype.Component;

import com.zte.sound.service.bean.CompactDisc;

//@Component注解会告诉Spring创建这个类的实例bean(注意,启动Component注解功能需要在xml里面配置)
//@Component("newName")//这里,配置类已经创建了
public class SgtPeppers implements CompactDisc {

    private String title;
    private String artist;
    
    public SgtPeppers(String title,String artist){
        this.title=title;
        this.artist=artist;
        System.out.println("SgtPeppers类实例化");
    }
    
    public void play() {
        System.out.println("Sgt Playing:title="+title+" artist="+artist);
    }

}

 

新实现类:

package com.zte.sound.service.bean.imp;

import org.springframework.stereotype.Component;

import com.zte.sound.service.bean.CompactDisc;

//@Component注解会告诉Spring创建这个类的实例bean(注意,启动Component注解功能需要在xml里面配置)
//@Component("newName")//这里,配置类已经创建了
public class SgtPeppers_new implements CompactDisc {

    private String title;
    private String artist;
    
    public SgtPeppers_new(String title,String artist){
        this.title=title;
        this.artist=artist;
        System.out.println("SgtPeppers_new类实例化");
    }
    
    public void play() {
        System.out.println("Sgt_new Playing:title="+title+" artist="+artist);
    }

}

 

配置文件:

sgtppers.title=title_new
sgtppers.artist=artist_new

 

配置类:

package configs;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

import com.zte.sound.service.bean.CompactDisc;
import com.zte.sound.service.bean.imp.SgtPeppers;

@Configuration
@ComponentScan(basePackageClasses={SgtPeppers.class})
public class CDPlayerConfig {

    @Bean
    public CompactDisc returnSgtPeppers(){//播放SgtPeppers
        return new SgtPeppers("title","artist");
    }
    
}

 

新配置类:

package configs;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;

import com.zte.sound.service.bean.imp.SgtPeppers;
import com.zte.sound.service.bean.imp.SgtPeppers_new;

@Configuration
@ComponentScan(basePackageClasses={SgtPeppers.class})
@PropertySource("classpath:/configs/app.properties")
public class ExpressiveConfig {
    
    @Autowired
    Environment env;

    @Bean
    public SgtPeppers_new returnSgtPeppers_new(){
        String title=env.getProperty("sgtppers.title");
        String artist=env.getProperty("sgtppers.artist");
        return new SgtPeppers_new(title, artist);
    }

}

 

测试类:

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 com.zte.sound.service.bean.CompactDisc;

import configs.CDPlayerConfig;
import configs.ExpressiveConfig;

@RunWith(SpringJUnit4ClassRunner.class)//Spring的Junit测试,会在测试开始时,创建Spring的应用上下文
//@ContextConfiguration(classes=CDPlayerConfig.class)//表明配置类
@ContextConfiguration(classes=ExpressiveConfig.class)//表明配置类
public class SpringTest1 {

    //自动装配
    @Autowired
    private CompactDisc sp;
    
    @Test 
    public void instanceSpring(){
        //自动装配
        sp.play();
    }
}

 

以上是关于Spring4 In Action-3.5.1-@PropertySource运行时注入值的主要内容,如果未能解决你的问题,请参考以下文章

Spring4 In Action-5.2.2-Spring Web应用程序-简单的控制器实现跳转

Spring4 In Action-5.2.3-Spring Web应用程序-向页面输出列表接收参数接收表单

Spring4相关jar包介绍(转)

Spring版本功能变更&Spring4.x的新特性

spring in action 4 第6章 视图分发

Spring4.1新特性——Spring缓存框架增强(转)