精华内容
下载资源
问答
  • 主要介绍了如何基于JAVA读取yml配置文件指定key内容,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • application.properties配置文件fileName=configNamePropertiesConfig类文件import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;@Componentpublic class ...

    application.properties配置文件

    fileName=configName

    PropertiesConfig类文件

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

    import org.springframework.stereotype.Component;

    @Component

    public class PropertiesConfig {

    [email protected]

    @Value("${fileName}")

    private String fileName;

    public String getFileName() {

    return fileName;

    }

    public void setFileName(String fileName) {

    this.fileName = fileName;

    }

    }

    测试

    import com.model.PropertiesConfig;

    import org.junit.Test;

    import org.junit.runner.RunWith;

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

    import org.springframework.boot.test.context.SpringBootTest;

    import org.springframework.test.context.junit4.SpringRunner;

    @RunWith(SpringRunner.class)

    @SpringBootTest

    public class PropertiesConfigTest {

    @Autowired

    private PropertiesConfig propertiesConfig;

    @Test

    public void test(){

    System.out.println(propertiesConfig.getFileName());//结果输出:configName

    assert "configName".equals(propertiesConfig.getFileName());

    }

    }

    application.properties文件

    database.username=root

    database.password=root

    DatabaseConfig类文件

    import org.springframework.boot.context.properties.ConfigurationProperties;

    import org.springframework.stereotype.Component;

    @Component

    @ConfigurationProperties("database")

    public class DatabaseConfig {

    private String userName;

    private String passWord;

    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;

    }

    }

    测试

    import com.model.DatabaseConfig;

    import org.junit.Test;

    import org.junit.runner.RunWith;

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

    import org.springframework.boot.test.context.SpringBootTest;

    import org.springframework.test.context.junit4.SpringRunner;

    @RunWith(SpringRunner.class)

    @SpringBootTest

    public class DatabaseConfigTest {

    @Autowired

    private DatabaseConfig databaseConfig;

    @Test

    public void test(){

    System.out.println("username = " + databaseConfig.getUserName() +", password = "+databaseConfig.getPassWord());//结果输出:username = root, password = root

    assert "root".equals(databaseConfig.getUserName());

    assert "root".equals(databaseConfig.getPassWord());

    }

    }

    新建property-source.properties配置文件

    fileName=configName

    database.username=root

    database.password=root

    PropertySourceConfig类文件

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

    import org.springframework.boot.context.properties.ConfigurationProperties;

    import org.springframework.context.annotation.PropertySource;

    import org.springframework.stereotype.Component;

    @Component

    @PropertySource(value = {"classpath:property-source.properties"})

    @ConfigurationProperties("database")

    public class PropertySourceConfig {

    @Value("${fileName}")

    private String fileName;

    private String userName;

    private String passWord;

    public String getFileName() {

    return fileName;

    }

    public void setFileName(String fileName) {

    this.fileName = fileName;

    }

    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;

    }

    }

    测试

    import com.model.PropertySourceConfig;

    import org.junit.Test;

    import org.junit.runner.RunWith;

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

    import org.springframework.boot.test.context.SpringBootTest;

    import org.springframework.test.context.junit4.SpringRunner;

    @RunWith(SpringRunner.class)

    @SpringBootTest

    public class PropertySourceConfigTest {

    @Autowired

    private PropertySourceConfig propertySourceConfig;

    @Test

    public void test(){

    assert "configName".equals(propertySourceConfig.getFileName());

    System.out.println("fileName = " + propertySourceConfig.getFileName());//结果输出:configName

    assert "root".equals(propertySourceConfig.getUserName());

    System.out.println(propertySourceConfig.getUserName());//结果输出:root

    assert "root".equals(propertySourceConfig.getPassWord());

    System.out.println(propertySourceConfig.getPassWord());//结果输出:root

    }

    }

    完整代码链接:read-config-file项目地址

    到此这篇关于详解SpringBoot注解读取配置文件的方式的文章就介绍到这了,更多相关SpringBoot注解读取配置文件内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

    展开全文
  • Spring Boot获取文件总的来说有三种方式,分别...这三种注解可以配合着@PropertySource来使用,@PropertySource主要是用来指定具体的配置文件。@PropertySource解析@Target(ElementType.TYPE)@Retention(RetentionP...

    Spring Boot获取文件总的来说有三种方式,分别是@Value注解,@ConfigurationProperties注解和Environment接口。这三种注解可以配合着@PropertySource来使用,@PropertySource主要是用来指定具体的配置文件。

    @PropertySource解析

    @Target(ElementType.TYPE)

    @Retention(RetentionPolicy.RUNTIME)

    @Documented

    @Repeatable(PropertySources.class)

    public @interface PropertySource {

    String name() default "";

    String[] value();

    boolean ignoreResourceNotFound() default false;

    String encoding() default "";

    Class extends PropertySourceFactory> factory() default PropertySourceFactory.class;

    }

    value():指定配置文件

    encoding():指定编码,因为properties文件的编码默认是ios8859-1,读取出来是乱码

    factory():自定义解析文件类型,因为该注解默认只会加载properties文件,如果想要指定yml等其他格式的文件需要自定义实现。

    一、@Value注解读取文件

    新建两个配置文件config.properties和configs.properties,分别写入如下内容:

    zhbin.config.web-configs.name=Java旅途

    zhbin.config.web-configs.age=22

    zhbin.config.web-configs.name=Java旅途

    zhbin.config.web-configs.age=18

    新增一个类用来读取配置文件

    @Configuration

    @PropertySource(value = {"classpath:config.properties"},encoding="gbk")

    public class GetProperties {

    @Value("${zhbin.config.web-configs.name}")

    private String name;

    @Value("${zhbin.config.web-configs.age}")

    private String age;

    public String getConfig() {

    return name+"-----"+age;

    }

    }

    如果想要读取yml文件,则我们需要重写DefaultPropertySourceFactory,让其加载yml文件,然后在注解

    @PropertySource上自定factory。代码如下:

    public class YmlConfigFactory extends DefaultPropertySourceFactory {

    @Override

    public PropertySource> createPropertySource(String name, EncodedResource resource) throws IOException {

    String sourceName = name != null ? name : resource.getResource().getFilename();

    if (!resource.getResource().exists()) {

    return new PropertiesPropertySource(sourceName, new Properties());

    } else if (sourceName.endsWith(".yml") || sourceName.endsWith(".yaml")) {

    Properties propertiesFromYaml = loadYml(resource);

    return new PropertiesPropertySource(sourceName, propertiesFromYaml);

    } else {

    return super.createPropertySource(name, resource);

    }

    }

    private Properties loadYml(EncodedResource resource) throws IOException {

    YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();

    factory.setResources(resource.getResource());

    factory.afterPropertiesSet();

    return factory.getObject();

    }

    }

    @PropertySource(value = {"classpath:config.properties"},encoding="gbk",factory = YmlConfigFactory.class)

    二、Environment读取文件

    配置文件我们继续用上面的两个,定义一个类去读取配置文件

    @Configuration

    @PropertySource(value = {"classpath:config.properties"},encoding="gbk")

    public class GetProperties {

    @Autowired

    Environment environment;

    public String getEnvConfig(){

    String name = environment.getProperty("zhbin.config.web-configs.name");

    String age = environment.getProperty("zhbin.config.web-configs.age");

    return name+"-----"+age;

    }

    }

    三、@ConfigurationProperties读取配置文件

    @ConfigurationProperties可以将配置文件直接映射成一个实体类,然后我们可以直接操作实体类来获取配置文件相关数据。

    新建一个yml文件,当然properties文件也没问题

    zhbin:

    config:

    web-configs:

    name: Java旅途

    age: 20

    新建实体类用来映射该配置

    @Component

    @ConfigurationProperties(prefix = "zhbin.config")

    @Data

    public class StudentYml {

    // webConfigs务必与配置文件相对应,写为驼峰命名方式

    private WebConfigs webConfigs = new WebConfigs();

    @Data

    public static class WebConfigs {

    private String name;

    private String age;

    }

    }

    prefix = "zhbin.config"用来指定配置文件前缀

    如果需要获取list集合,则做以下修改即可。

    zhbin:

    config:

    web-configs:

    - name: Java旅途

    age: 20

    - name: Java旅途2

    age: 202

    @Component

    @ConfigurationProperties(prefix = "zhbin.config")

    @Data

    public class StudentYml {

    private List webConfigs = new ArrayList<>();

    @Data

    public static class WebConfigs {

    private String name;

    private String age;

    }

    }

    经验与坑

    properties文件默认使用的是iso8859-1,并且不可修改

    yml文件的加载顺序高于properties,但是读取配置信息的时候会读取后加载的

    @PropertySource注解默认只会加载properties文件

    @PropertySource注解可以与任何一种方式联合使用

    简单值推荐使用@Value,复杂对象推荐使用@ConfigurationProperties

    展开全文
  • 一、使用注解@PropertySource指定路径使用 @PropertySource 指定配置文件路径,支持 properties 和 XML 的配置文件,但不...直接赋值:@Value("name jack")读取配置文件:@Value("${user.age}")指定默认值:@Value...

    一、使用注解@PropertySource

    指定路径

    使用 @PropertySource 指定配置文件路径,支持 properties 和 XML 的配置文件,但不支持 yml。

    属性赋值

    可以用注解 @Value 对属性直接赋值、${}获取配置文件的值、SPEL表达式#{}。

    直接赋值:@Value("name jack")

    读取配置文件:@Value("${user.age}")

    指定默认值:@Value("${user.desc:default desc}") 表示如果没有user.desc的配置,则赋值为default desc

    SPEL表达式:@Value("#{'${user.username}'?.toUpperCase()}") 表示将从配置文件读取的值转为大写,?可以不填,表示如果没有user.username的配置,则忽略

    例子

    config.properties内容

    ps.datasource.driverClassName=com.mysql.jdbc.Driver

    ps.datasource.jdbcUrl=jdbc:mysql://localhost:3306/spring?useTimezone=true&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8&tcpRcvBuf=1024000&useOldAliasMetadataBehavior=true&useSSL=false&rewriteBatchedStatements=true&useAffectedRows=true

    ps.datasource.username=root

    ps.datasource.password=root

    ps.datasource.minIdle=1

    ps.datasource.maxPoolSize=10

    ps.datasource.connectionTimeout=3000

    ps.datasource.idleTimeout=300000

    配置类

    /**

    * 使用@PropertySource指定具体的配置文件,用@Value设置具体的属性值, 不支持yml

    */

    @Component

    @PropertySource("classpath:config.properties")

    public class DbProperties {

    @Value("${ps.datasource.driverClassName}")

    private String driverClassName;

    @Value("${ps.datasource.jdbcUrl}")

    private String jdbcUrl;

    @Value("${ps.datasource.username}")

    private String username;

    @Value("${ps.datasource.password}")

    private String password;

    @Value("${ps.datasource.minIdle}")

    private int minIdle;

    @Value("${ps.datasource.maxPoolSize}")

    private int maxPoolSize;

    @Value("${ps.datasource.connectionTimeout}")

    private int connectionTimeout;

    @Value("${ps.datasource.idleTimeout}")

    private int idleTimeout;

    public String getDriverClassName() {

    return driverClassName;

    }

    public void setDriverClassName(String driverClassName) {

    this.driverClassName = driverClassName;

    }

    public String getJdbcUrl() {

    return jdbcUrl;

    }

    public void setJdbcUrl(String jdbcUrl) {

    this.jdbcUrl = jdbcUrl;

    }

    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 int getMinIdle() {

    return minIdle;

    }

    public void setMinIdle(int minIdle) {

    this.minIdle = minIdle;

    }

    public int getMaxPoolSize() {

    return maxPoolSize;

    }

    public void setMaxPoolSize(int maxPoolSize) {

    this.maxPoolSize = maxPoolSize;

    }

    public int getConnectionTimeout() {

    return connectionTimeout;

    }

    public void setConnectionTimeout(int connectionTimeout) {

    this.connectionTimeout = connectionTimeout;

    }

    public int getIdleTimeout() {

    return idleTimeout;

    }

    public void setIdleTimeout(int idleTimeout) {

    this.idleTimeout = idleTimeout;

    }

    @Override

    public String toString() {

    return "DbProperties{" +

    "driverClassName='" + driverClassName + '\'' +

    ", jdbcUrl='" + jdbcUrl + '\'' +

    ", username='" + username + '\'' +

    ", password='" + password + '\'' +

    ", minIdle=" + minIdle +

    ", maxPoolSize=" + maxPoolSize +

    ", connectionTimeout=" + connectionTimeout +

    ", idleTimeout=" + idleTimeout +

    '}';

    }

    }

    二、使用Environment

    /**

    * Environment可以获取classpath下配置的属性值,无需指定具体的配置文件。 不支持yml

    */

    @Component

    public class UserProperties {

    @Autowired

    private Environment env;

    public String getUserName() {

    return env.getProperty("user.name");

    }

    public String getPassword() {

    return env.getProperty("user.password");

    }

    }

    三、使用PropertiesLoaderUtils

    try {

    Properties properties = PropertiesLoaderUtils.loadAllProperties("config.properties");

    System.out.println(properties.getProperty("user.name"));

    } catch (IOException e) {

    e.printStackTrace();

    }

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • 如使用spring的注解 @Scheduled 执行定时任务public interface IMyTestService {public void myTest();}@Componentpublic class MyTestServiceImpl implements IMyTestService {@Scheduled(cron="0 0 9 * * ? ")//...

    如使用spring的注解 @Scheduled 执行定时任务

    public interface IMyTestService {

    public void myTest();

    }

    @Component

    public class MyTestServiceImpl implements IMyTestService {

    @Scheduled(cron="0 0 9 * * ? ")//每天9点执行

    @Override

    public void myTest(){

    System.out.println("进入测试");

    }

    }

    现在要求cron中的时间在配置文件中可配,可以使用注解的方式读取配置文件

    比如有config.properties

    time.schedule=.0 0 9 * * ?

    上面代码可改写为

    @PropertySource("classpath:config.properties")

    public class MyTestServiceImpl implements IMyTestService

    {

    @Scheduled("${time.schedule}")

    @Override

    public void myTest(){

    System.out.println("进入测试");

    }

    }

    //为了让spring正确解析出${}中的值,需要添加下列代码

    @Bean

    public static PropertySourcesPlaceholderConfigurer propertyConfigInDev() {

    return new PropertySourcesPlaceholderConfigurer();

    }

    另外,在spring 3.2中,允许支持读取多个properties了,

    Java代码 收藏代码

    @Configuration

    @PropertySource({

    "classpath:config.properties",

    "classpath:db.properties"

    })

    public class AppConfig {

    @Autowired

    Environment env;

    }

    spring 4.1中,支持@PropertySources

    @Configuration

    @PropertySources({

    @PropertySource("classpath:config.properties"),

    @PropertySource("classpath:db.properties")

    })

    public class AppConfig {

    //...

    }

    展开全文
  • java配置是spring4.x推荐的配置方式,可以完全替代xml配置。1、注解 @Configuration...@Configuration作用在类上,相当于一个xml配置文件;@Bean作用在方法上,相当于xml配置中的UserServiceImplpackagecom.oy.servi...
  • java读取配置文件中文乱码

    千次阅读 2020-01-08 10:40:01
    配置文件是utf-8编码,但是使用下面这种方式读取出来的中文还是乱码的: public static void main(String[] args) throws Exception{ Properties p = loadProperty(); String a = p.getProperty("pro.key"); ...
  • Java读取配置文件的五种方式

    千次阅读 2019-10-12 16:37:27
    二、通过ResourceBundle类获取配置文件资源 三、ClassLoader方式读取 四、使用Sping提供的PropertiesLoaderUtils类 五、@Value("${content}")方式 一、ServletContext获取真实路径 使用request的ServletContext...
  • 参考http://blog.csdn.net/sunhuwh/article/details/38945445通过读取.properties配置文件中的键值来实现动态添加注解内容例如@Controller @RequestMapping(value = "${adminPath}/act/model")一、需要注解JAVA...
  • 属性赋值可以用注解 @Value 对属性直接赋值、${}获取配置文件的值、SPEL表达式#{}。直接赋值:@Value("name jack")读取配置文件:@Value("${user.age}")指定默认值:@Value("${user.desc:default...
  • 1、application.properties 配置文件mail.username=xue@163.commail.password=xuemail.host=smtp.163.commail.smtp.auth=true2、给普通变量赋值,直接在变量上添加 @Value 注解import org.springframework.beans....
  • 1、用法示例: 在springMVC.xml配置文件中添加标签 (推荐用这个,这个用的比较多,也比较简洁) &lt;context:property-placeholder location="classpath:salesman.properties"/&gt; 加载多个...
  • 通过@PropertySource注解将properties配置文件中的值存储到Spring的Environment中,Environment接口提供方法去读取配置文件中的值,参数是properties文件中定义的key值。2.如下配置文件 3.获取配置文件中的属性值:1....
  • 这里顺带使用一下自定义注解方式,基于java 反射机制读取.properties格式文件。 demo的大致内容包含以下: 1.配置文件:config.properties url=http://www.hrsstd.com password= root username= zhanghuilong port ...
  • Java读取properties配置文件时,中文乱码解决方法
  • Java读取properties配置文件的几种方式

    千次阅读 2019-07-18 19:00:26
    Java读取Properties配置文件的几种方式 在这里整理一下Java读取配置文件的方式,本文的环境是Springboot+ssm 一、学习路线 1、什么是配置文件? 2、配置文件的好处? 3、怎么使用? 4、怎样使用Java进行读取? 二...
  • 1. 本帖内容 在用java作开发时,一般会选择使用xml文件作为配置文件,故而通过java工程读取配置文件则是必须掌握的知识;传统的C/C++通过File文件的方式或者说通过流的方式进行读写,过分的浪费内存与效率,且读写...
  • 先引入需要的依赖org.yamlsnakeyaml1.23读取YML文件工具类的代码import org.apache.commons.lang3.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.util....
  • 一、使用@interface关键字来标识为注解类:@Target({ ElementType.TYPE })@Retention( RetentionPolicy.RUNTIME )@Componentpublic @interface Config {}@Target({ ElementType.TYPE })为注解的作用目标 这里表示的...
  • 读取配置文件里面的属性赋值给java类 创建java类,类属性与要读取配置文件名称相对应 例如: application.yml中 textcloud: config: fastdfs-url: token: interceptor: enable: true expire: 1800 ...
  • Java注解配置

    2021-03-04 01:49:49
    Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在 java.lang.annotation 包中。四个元注解...
  • java配置注解

    2021-03-08 23:27:27
    使用java配置时,我接触到了许多陌生的注解,所以专门开一章来记录新接触的这些注解@Configuration1、表明该类时配置类 2、将该类纳入spring容器中@Bean通过该注解表明注入一个Bean对象,相当于xml中的通常这样使用...
  • 在实际项目中有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取properties里面的配置,这样后期只需要改动properties配置文件即可,不需要修改源代码这样更加...
  • 通过配置文件的方式以配置文件的方式启动spring容器时,可以使用property标签的value给bean的属性赋值,赋值的形式有以下几种:-->classpath下的properties文件内容person.age=\u5C0F\u674E\u56DB通过注解的方式...
  • /** * Description: 属性文件工具类 * * @author zhaofeng * @version 1.0 * @date: 2019/8/21 15:24 * @since JDK 1.8 */ public class PropUtil { /** * 读取配置文件属性到对应的配置类 * * @param config 配置...
  • springboot项目的配置文件信息一般放在application.yml(也有命名application.properties)文件中,当项目启动的时候,我们可以只修改配置文件中的配置,而不修改代码。如果不在配置文件中配置信息,虽然也可以实现...
  • 在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来完成,本文根据笔者工作中用到的读取配置文件的方法小小总结一下,主要叙述的是spring读取配置文件的方法。 (一)新建一个java bean...
  • config.properties server.key111=assign-center ...--扫描和properties配置一定要在一个xml里,否则可能会读取不到,这里涉及到一个xml作用域的问题--&amp;gt; &amp;lt;context:compo...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 100,917
精华内容 40,366
关键字:

java读取配置文件注解

java 订阅