Spring读取外部的资源配置文件—@PropertySource和@Value实现资源文件配置

通过@PropertySource可以指定读取的配置文件,通过@Value注解获取值;
@PropertySource注解主要是让Spring的Environment接口读取属性配置文件用的,标识在@Configuration配置类上;
@Value注解可以用在字段和方法上,通常用于从属性配置文件中读取属性值,也可以设置默认值。

具体用法:

@PropertySource(value = { "classpath:config.properties" }, ignoreResourceNotFound = true)
public class UserSpringConfig {
    ...
}

a、配置多个配置文件

@PropertySource(value = { "classpath:jdbc.properties", "classpath:config.properties"})
public class UserSpringConfig {
    ...
}

b、忽略不存在的配置文件

@PropertySource(value = { "classpath:jdbc.properties","classpath:config.properties"}, ignoreResourceNotFound = true)
public class UserSpringConfig {
    ...
}

资源文件配置示例
1、创建配置文件,${project}/src/main/resources/config.properties

username=zhangsan
password=123456
age=20

2、读取外部的资源配置文件

package com.lynch.javaconfig;

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

public class User {
    @Value("${username}")
    private String username;
    @Value("${password}")
    private String password;
    @Value("${age}")
    private Integer age;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getAge() {
        return age;
    }

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

    @Override
    public String toString() {
        return "User [username=" + username + ", password=" + password + ", age=" + age + "]";
    }

}

3、编写SpringConfig,用于实例化Spring容器

package com.lynch.javaconfig;

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

//通过@Configuration注解来表明该类是一个Spring的配置,相当于一个xml文件
@Configuration
@ComponentScan(basePackages = "com.lynch.javaconfig")
@PropertySource(value = { "classpath:config.properties"}, ignoreResourceNotFound = true)
public class UserSpringConfig {

    @Bean
    public User user(){
        return new User();
    }

}

4、编写测试方法,用于启动Spring容器

package com.lynch.javaconfig;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class UserApplication {

    public static void main(String[] args) {
        // 通过Java配置来实例化Spring容器
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(UserSpringConfig.class);

        System.out.println(context.getBean(User.class));

        // 销毁该容器
        context.destroy();
    }

}

5、执行结果

SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
User [username=Administrator, password=123456, age=20]
九月 16, 2018 9:04:45 下午 org.springframework.context.annotation.AnnotationConfigApplicationContext doClose

注意,从执行结果发现username输出的是"Administrator",而不是"zhangsan",那是因为系统变量跟配置文件存在相同变量时,优先从系统变量获取,故username输出的是"Administrator"。

原文地址:https://www.cnblogs.com/linjiqin/p/9657919.html

时间: 2024-08-28 21:14:33

Spring读取外部的资源配置文件—@PropertySource和@Value实现资源文件配置的相关文章

jar读取外部和内部配置文件的问题

最近修改XX应用的时候,涉及到需要在jar包中读取工程配置文件的问题.在jar包中,读取配置文件,需要单独处理. 项目中的一些配置文件,如dbconfig.properties log4j.xml 不想打包进jar. 因为可能会修改其中的一些配置信息,打包进jar,就变得比较笨拙,不方便修改文件. 可以用如下方式,实现在jar包中读取外部配置文件. 方法一: 关键代码. 读取properties文件方法: InputStream ins = getClass().getResourceAsStr

Spring读取不同环境的配置文件

目录 配置文件 需求 Spring环境 配置类 PropertySourceFactory 非Spring环境 配置文件 需求 针对不同环境下,可以配置不同的配置文件,如application-dev.properties.application-test.properties. Spring环境 采用spring.profiles.active属性来区分不同的应用环境. 配置类 @Data @Component @ConfigurationProperties(prefix = "log&qu

spring读取properties和其他配置文件的几种方式

1.因为spring容器的一些机制,在读取配置文件进行数据库的配置等等是很有必要的,所以我们要考虑配置文件的的读取方式以及各个方式的实用性 2.配置文件的读取方式我这里介绍2种,目的是掌握这2种就可以很好的应用了 3.这里我的properies配置文件如下: driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/m_model?useUnicode=true&characterEncoding=utf8 username=roo

Java配置方式读取外部的资源配置文件

通过@PropertySource可以指定读取的配置文件,通过@Value注解获取值,具体用法: package cn.qlq; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.

(转)JAVA读取外部资源的方法

在java代码中经常有读取外部资源的要求:如配置文件等等,通常会把配置文件放在classpath下或者在web项目中放在web-inf下. 1.从当前的工作目录中读取: try { BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("wkdir.txt")));    String str;    while ((str = in.readLine()) != null) {

Spring 读取资源

Spring 读取资源 主要介绍3种方式(当然不止三种,但是这三种基本能应付大多需求)FileSystemResource:以文件的绝对路径方式进行访问ClassPathResourcee:以类路径的方式访问ServletContextResource:web应用根目录的方式访问 主要公用方法介绍(Resource接口下的)getFilename() : 获得文件名称contentLength() : 获得文件大小createRelative(path) : 在资源的相对地址上创建新文件exis

Spring使用外部的配置文件

在使用Spring做web项目的时候,通常会使用到数据库的连接信息 jdbcUrl driverClass username password 那么应该如何使用这些属性呢? 如在Spring中使用数据库连接池(数据源) 你可能会这样写 <!-- 配置数据库连接池 ComboPooledDataSource --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource&qu

spring(读取外部数据库配置信息、基于注解管理bean、DI)

###解析外部配置文件在resources文件夹下,新建db.properties(和数据库连接相关的信息) driverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/dbusername=rootpassword=root 开发步骤1)创建maven工程添加web.xml添加tomcat运行环境添加jar spring-webmvc,junit,commons-dbcp,mysql添加application.xml

Spring读取xml配置文件的原理与实现

本篇博文的目录: 一:前言 二:spring的配置文件 三:依赖的第三方库.使用技术.代码布局 四:Document实现 五:获取Element的实现 六:解析Element元素 七:Bean创造器 八:Ioc容器的创建 九:总结 一:前言: Spring作为Bean的管理容器,在我们的项目构建中发挥了举足轻重的作用,尤其是控制反转(IOC)和依赖(DI)注入的特性,将对象的创建完全交给它来实现,当我们把与其他框架进行整合时,比如与Mybatis整合,可以把sqlMapClientTemplat