`

spring @Value注解

 
阅读更多

【转】使用Spring注解方式注入properties文件内容,并配合Junit4+Spring做单元测试

先看看工作目录,然后再来讲解

1、建立config.properties,我的config.properties内容如下:

 

author_name=luolin
project_info=该项目主要是用于写一些demo

 

 

2、配置Spring配置文件,读取properties文件,并设置编码格式。大家从我的项目结构图中可以看到我用了两个Spring的配置文件,其实在spring-context.xml中没有配置其他内容,只是配置扫描com.eya.property这个包,大家可能会有疑问为何包的扫描不直接在spring-mvc.xml中配置成扫描com.eya就可以了。其实这是一个习惯问题,不同的东西做不同的事情,在 spring-mvc.xml中我只配置了去扫描com.eya.controller这个包。

 

<!-- 使用注解注入properties中的值 -->
	<beanid="setting"class="org.springframework.beans.factory.config.PropertiesFactoryBean">
		<propertyname="locations">
			<list>
				<value>classpath:config.properties</value>
			</list>
		</property>
		<!-- 设置编码格式 -->
		<propertyname="fileEncoding"value="UTF-8"></property>
	</bean>

 

 

3、编写和 config.properties文件中的值对应的ConfigProperty.java文件。加上注解@Comopnent("configProperty")将该类交给Spring容器管理,且指定该组件的名称为configProperty

 

这里说明一下,在使用@Value 注解的时候,其内部的格式是#{beanID[propertyKey]},这里的beanID是在第二步中配置PropertiesFactoryBean的时候指定的id值,propertyKey是和config.properties中的key对应。

 

/**
 * 
 */
package com.eya.property;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * config.properties文件映射类
 * @author luolin
 *
 * @version $id:ConfigProperty.java,v 0.1 2015年8月7日 下午2:10:44 luolin Exp $
 */
@Component("configProperty")
public classConfigProperty{

    /** 作者名字 */
    @Value("#{setting[author_name]}")
    private String authorName;
    /** 项目信息 */
    @Value("#{setting[project_info]}")
    private String projectInfo;

    /**
     * @return the authorName
     */
    public String getAuthorName() {
        return authorName;
    }

    /**
     * @param authorName the authorName to set
     */
    public void setAuthorName(String authorName) {
        this.authorName = authorName;
    }

    /**
     * @return the projectInfo
     */
    public String getProjectInfo() {
        return projectInfo;
    }

    /**
     * @param projectInfo the projectInfo to set
     */
    public void setProjectInfo(String projectInfo) {
        this.projectInfo = projectInfo;
    }

}

 

4、编写单元测试,测试是否注入成功。这里用的是Junit4 + Spring注解的方式,当做是练习。

 

/**
 * 
 */
package com.eya.property;


import javax.annotation.Resource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**
 * JUnit4 + Spring 注解进行单元测试,测试通过Spring注解获得Properties文件的值
 * @author luolin
 *
 * @version $id:ConfigPropertyTest.java,v 0.1 2015年8月7日 下午2:21:26 luolin Exp $
 */
@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations={"classpath:spring-mvc.xml","classpath:spring-context.xml"})
public class ConfigPropertyTest {

    @Resource(name = "configProperty")
    private ConfigProperty configProperty;
    
    /**
     * 测试Spring注解获取properties文件的值
     */
    @Test
    public void test() {
        System.out.println(configProperty.getAuthorName());
        System.out.println(configProperty.getProjectInfo());
    }

}

 

运行结果如图:

 

分享到:
评论

相关推荐

    基于Spring boot @Value 注解注入属性值的操作方法

    在Spring Boot应用中,`@Value`注解是用于注入属性值的重要工具,它可以方便地从配置文件或者非配置文件中获取数据,并将其赋值给字段或者方法参数。本篇文章将详细阐述`@Value`注解的使用方法,包括如何注入配置...

    Spring @Value注解失效问题解决方案

    Spring @Value注解失效问题解决方案 一、Spring @Value注解简介 在Spring框架中,@Value注解是一个非常重要的注解,它可以将属性文件中的值注入到Spring Bean中,使得配置更加灵活和灵活。但是,在实际开发中,...

    Spring Boot技术知识点:如何理解@Value注解

    在Spring Boot框架中,`@Value`注解是Spring的核心组件之一,用于注入配置属性值到Bean中。这个注解提供了灵活的方式,让我们能够从不同的来源(如.properties或.yml文件,环境变量,命令行参数等)获取并注入值。...

    static静态变量使用@Value注入方式.md

    通过上述分析和示例,我们可以看到,在Spring框架中,虽然不能直接使用`@Value`注解为静态变量注入值,但可以通过定义一个非静态方法并使用`@Value`注解来间接实现这一目标。这种方法不仅避免了潜在的警告和错误,还...

    Spring Boot系列四 Spring @Value 属性注入使用总结一

    Spring Boot系列四 Spring @Value 属性注入使用总结一

    spring-demo13-注解-@Value.zip

    在Spring框架中,`@Value`注解是一个非常实用的工具,它允许我们在bean的属性或者方法参数中直接注入配置属性值,极大地提高了代码的可读性和灵活性。本项目"spring-demo13-注解-@Value.zip"显然是一个关于如何使用`...

    Spring @value和@PropertySource注解使用方法解析

    Spring @Value 和 @PropertySource 注解使用方法解析 @Value 注解是 Spring 框架中用于将值注入到 Bean 中的注解。该注解可以用于注入基本字符串、EL 表达式、从配置文件读取数据等。例如,在上面的示例代码中,...

    Springboot中@Value的使用详解

    在Springboot中,@Value注解广泛应用于将配置文件中的属性注入到Controller、Service、Configuration、Component等Spring托管的类中。下面是@Value注解的详细使用介绍: 1. 普通字符串注入 在配置文件中,我们可以...

    SpringValue注解

    Spring Value 注解详解 Spring Value 注解是 Spring 框架中的一种重要注解,用于从 properties 文件中获取配置值。从 Spring 3 开始,Spring 框架支持使用 @Value 注解来简化读取配置文件的操作。 配置 properties...

    spring中@value注解需要注意的问题

    在Spring框架中,`@Value`注解是一个非常实用的功能,用于从属性文件或表达式语言(SpEL)中注入值到字段、方法参数或构造函数参数中。然而,在使用`@Value`时,需要注意一些关键问题以确保正确地配置和使用。下面将...

    Springboot在有参构造方法类中使用@Value注解取值

    这是因为 @Value 注解的生效需要 Bean 交给 Spring 进行管理,而不能使用 new 去实例化对象。 要使 @Value 生效,我们需要构建一个 Config 类: ```java @Configuration public class AConfig { @Bean(name="abc...

    @TypeDiscriminator注解实现多态对象的查询,jackson @JsonTypeInfo注解实现controller多态支持

    `@TypeDiscriminator` 和 `@JsonTypeInfo` 这两个注解分别来自Spring和Jackson库,它们用于解决序列化和反序列化过程中多态对象的处理问题。 首先,`@TypeDiscriminator` 是Spring Data JPA提供的一种注解,用于在...

    示例代码-SpringBoot踩坑记录:玩转@Value注解-自定义PropertySourcesPlaceHolderConfigurer.zip

    在Spring Boot应用中,`@Value`注解是开发者经常使用的工具,用于注入配置属性值。这个注解可以从`application.properties`或`application.yml`等配置文件中读取值,并将其注入到字段、方法参数或者构造函数参数中。...

    关于Spring中@Async注解使用

    Spring 中 @Async 注解的使用 @Async 注解是 Spring 框架提供的一种异步执行方法的实现方式,从 Spring 3.0 版本开始提供。使用 @Async 注解可以将方法标识为异步方法,通过 SimpleAsyncTaskExecutor 执行,但不...

    Spring Boot使用Value注解给静态变量赋值的方法

    Spring Boot 使用 Value 注解给静态变量赋值的方法 在 Spring Boot 框架中,我们经常需要将配置文件中的值注入到静态变量中,但是默认情况下,Spring Boot 不支持将值注入到静态变量中。这是因为静态变量是属于类的...

    Spring@Autowired注解与自动装配.rar

    - **自动装配候选列表**:可以使用`@Autowired`注解的`@Qualifier`注解的`value`属性,提供一个bean的名称列表,Spring会尝试从列表中找到匹配的bean。 ### 4. 配置控制 - **@Autowired注解的可选性**:使用`...

    Spring @Conditional注解原理解析

    "Spring @Conditional注解原理解析" Spring @Conditional注解是 Spring 4 新提供的注解,主要用于...@Conditional 注解还可以与其他注解一起使用,例如 @Profile 注解、@Value 注解等,从而实现更加复杂的逻辑判断。

    java之SpringCache之@Cacheable注解的说明使用

    在Spring3.1以后增加了一项happy的技术点,就是基于注解来实现缓存的技术。他的本质上不是具体的缓存方案实现,而是一个对缓存的抽象,让我们通过注解,实现少量的代码,达到实现缓存的方案。 Cacheable的说明 @...

    Spring注解 - 52注解 - 原稿笔记

    注解包含: 拦截器 , 过滤器 , 序列化 , @After , @AfterReturning , @AfterThrowing , @annotation , @Around , @Aspect , @Autowired , @Bean , @Before , @Component , @ComponentScan , @ComponentScans , @...

    关于Spring注解@Async引发其他注解失效的解决

    Spring @Async 注解引发其他注解失效的解决 Spring 框架提供了多种注解来帮助开发者简化代码,例如 @Async 用于异步执行方法、@Transaction 用于事务管理等。但是,在使用这些注解时,可能会遇到一些问题,例如 @...

Global site tag (gtag.js) - Google Analytics