精华内容
下载资源
问答
  • 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注解读取配置文件内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

    展开全文
  • 只针对于Springboot 使用开发环境:SpringBoot 2.1.0.RELEASEMaven 3.3.9Jdk 1.8Idea 2018.1.2三种常用的配置方式:以读取数据源的配置属性为例第一种 java通用的配置方式:利用@Value注解第一...

    问题:

    最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,不需要在进行查找修改代码。只针对于Springboot 使用

    开发环境:

    SpringBoot 2.1.0.RELEASE

    Maven 3.3.9

    Jdk 1.8

    Idea 2018.1.2

    三种常用的配置方式:以读取数据源的配置属性为例

    第一种 java通用的配置方式:利用@Value注解

    第一步:用IDEA 工具快速构建一个springboot 的web project 目录结构如下

    7c2b63c68354d53f34b2507634627882.png

    第二步:pom文件 添加依赖

    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    4.0.0

    cn.bearhunting

    configdemo

    0.0.1-SNAPSHOT

    jar

    configdemo

    Demo project for Spring Boot

    org.springframework.boot

    spring-boot-starter-parent

    2.1.0.RELEASE

    UTF-8

    UTF-8

    1.8

    org.springframework.boot

    spring-boot-starter-web

    com.alibaba

    druid

    1.1.8

    org.springframework.boot

    spring-boot-starter-test

    test

    org.springframework.boot

    spring-boot-maven-plugin

    第三步:创建要读取得配置文件 jdbc.properties,并添加属性值。

    92bf0143ae64710503d13fee48f3df34.png

    # 配置驱动

    jdbc.driverClassName = com.mysql.jdbc.Driver

    # 数据库连接得url

    jdbc.url = jdbc:mysql://localhost:3306/test

    # 连接数据库的用户名

    jdbc.username = root

    # 链接数据库得密码

    jdbc.password = root

    第四步:获取属性值,注入属性值

    先创建一个配置类

    package cn.bearhunting.configdemo.config;

    import com.alibaba.druid.pool.DruidDataSource;

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

    import org.springframework.context.annotation.Bean;

    import org.springframework.context.annotation.Configuration;

    import org.springframework.context.annotation.PropertySource;

    import javax.sql.DataSource;

    /**

    * @ClassName: jdbcConfig

    * @discription: 数据源属性配置

    * @author: lele

    * @create: 2018-11-28 15:34

    */

    @Configuration

    @PropertySource("classpath:jdbc.properties")

    public class jdbcConfig {

    @Value("${jdbc.driverClassName}")

    private String driverClassName;

    @Value("${jdbc.url}")

    private String url;

    @Value("${jdbc.username}")

    private String username;

    @Value("${jdbc.password}")

    private String password;

    @Bean

    public DataSource getDataSource(){

    DruidDataSource dataSource =new DruidDataSource();

    dataSource.setDriverClassName(driverClassName);

    dataSource.setUrl(url);

    dataSource.setUsername(username);

    dataSource.setPassword(password);

    return dataSource;

    }

    }

    注解说明:

    @Configration

    用于定义声明配置类,等同于xml配置文件

    @PropertySource

    可以点进去看源码,里面有示例

    901a54010b505ddb5ef51082d7e58c27.png

    @Value("${jdbc.driverClassName}")

    读取配置文件的属性值

    @Bean 配合@Configration使用,作用在方法上,相当于xml配置文件<?bean>

    第五步:测试类 DUG 测试结果

    package cn.bearhunting.configdemo;

    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;

    import javax.sql.DataSource;

    @RunWith(SpringRunner.class)

    @SpringBootTest

    public class ApplicationTests {

    @Autowired

    private DataSource dataSource;

    @Test

    public void contextLoads() {

    System.out.println(dataSource);

    }

    }

    获取数据成功

    35831c90f96ba7a04d3a8f2f9e5ac3f1.png

    第二种方法:springboot 的配置方式

    第三步,要把jdbc.properties 文件名改成 application.properties (application.properties是springboot的默认的配置文件,会自动读取)

    c5899dcfa5b853509c75d90c0855622c.png

    第四步,创建一个JdbcProperties属性配置类如下

    package cn.bearhunting.configdemo.config;

    import lombok.Data;

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

    /**

    * @ClassName: JdbcProperties

    * @discription:

    * @author: lele

    * @create: 2018-11-28 16:25

    */

    @ConfigurationProperties(prefix = "jdbc")

    @Data

    public class JdbcProperties {

    private String driverClassName;

    private String url;

    private String username;

    private String password;

    }

    @ConfigrationProperties(prefix = "jdbc")

    指定前缀,属性文件的属性名和配置类的属性名要完全一致;

    @Data

    了解一下lombok 此处不做说明,作用是不用写set get 方法

    第五步  将JdbcConfig 类进行改写

    package cn.bearhunting.configdemo.config;

    import com.alibaba.druid.pool.DruidDataSource;

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

    import org.springframework.context.annotation.Bean;

    import org.springframework.context.annotation.Configuration;

    import javax.sql.DataSource;

    /**

    * @ClassName: jdbcConfig

    * @discription: 数据源属性配置

    * @author: lele

    * @create: 2018-11-28 15:34

    */

    @Configuration

    @EnableConfigurationProperties(JdbcProperties.class)

    public class jdbcConfig {

    @Bean

    public DataSource getDataSource(JdbcProperties jdbcProperties){

    DruidDataSource dataSource =new DruidDataSource();

    dataSource.setDriverClassName(jdbcProperties.getDriverClassName());

    dataSource.setUrl(jdbcProperties.getUrl());

    dataSource.setUsername(jdbcProperties.getUsername());

    dataSource.setPassword(jdbcProperties.getPassword());

    return dataSource;

    }

    }

    注解说明:

    @EnableConfigurationProperties(JdbcProperties.class)

    开启使用属性配置类 JdbcProperties

    最后获取数据成功

    第三种,最简洁的一种

    不需要属性配置类 ,直接注入

    package cn.bearhunting.configdemo.config;

    import com.alibaba.druid.pool.DruidDataSource;

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

    import org.springframework.context.annotation.Bean;

    import org.springframework.context.annotation.Configuration;

    import javax.sql.DataSource;

    /**

    * @ClassName: jdbcConfig

    * @discription: 数据源属性配置

    * @author: lele

    * @create: 2018-11-28 15:34

    */

    @Configuration

    public class jdbcConfig {

    @Bean

    @ConfigurationProperties(prefix = "jdbc")

    public DataSource getDataSource(){

    return new DruidDataSource();

    }

    }

    展开全文
  • 参考http://blog.csdn.net/sunhuwh/article/details/38945445通过读取.properties配置文件中的键值来实现动态添加注解内容例如@Controller @RequestMapping(value = "${adminPath}/act/model")一、需要注解JAVA...

    参考http://blog.csdn.net/sunhuwh/article/details/38945445

    通过读取.properties配置文件中的键值来实现动态添加注解内容例如@Controller @RequestMapping(value = "${adminPath}/act/model")

    一、需要注解的JAVA程序代码。

    @Controller

    @RequestMapping(value = "${adminPath}/act/model")

    public class ActModelController extends BaseController {

    @Autowired

    private ActModelService actModelService;

    /**

    * 流程模型列表

    */

    @RequiresPermissions("act:model:edit")

    @RequestMapping(value = { "list", "" })

    public String modelList(String category, HttpServletRequest request, HttpServletResponse response, Model model) {

    Page page = actModelService.modelList(

    new Page(request, response), category);

    model.addAttribute("page", page);

    model.addAttribute("category", category);

    return "modules/act/actModelList";

    }}

    二、properties配置文件的内容

    adminPath=/a三、ApplicationContext.xml中加载properties配置文件内容

    展开全文
  • Spring Boot获取文件总的来...这三种注解可以配合着@PropertySource来使用,@PropertySource主要是用来指定具体的配置文件。@PropertySource解析 value():指定配置文件encoding():指定编码,因为properties文件的...

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

    @PropertySource解析

    a0b73e6f593ba79a2fc4a19f1ad847ae.png

    value():指定配置文件

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

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

    一、@Value注解读取文件

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

    036b77892623fcab6abd583c928912f3.png

    6dd0ab4454aac0a5fa5646fd2ae53b59.png

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

    a4848a932bb199d65885a524ea2a969d.png

    如果想要读取yml文件,则我们需要重写DefaultPropertySourceFactory,让其加载yml文件,然后在注解@PropertySource上自定factory。代码如下:

    714d7933a3e4ae1d49ef64d8ed8c4032.png

    652e1f6d016a9e2ef50d830c0bc24edb.png

    二、Environment读取文件

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

    c6ed564225a5c491c5dd8406ce83dc16.png

    三、@ConfigurationProperties读取配置文件

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

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

    zhbin:config:web-configs:name: Java旅途age: 20

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

    0b445b9ad9296464e2ee1da411f1181f.png

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

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

    zhbin:config:web-configs:- name: Java旅途age: 20- name: Java旅途2age: 202

    b9ac1b2c09c03eaa0d544f5081ff57ce.png

    经验与坑

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

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

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

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

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

    展开全文
  • 一、@Value读取application.properties配置文件中的值application.properties配置文件fileName=configNamePropertiesConfig类文件import org.springframework.beans.factory.annotation.Value;import org.spring...
  • # 使用注解或其他静态注入的方法 这里不讨论思路:创建工具类 实现读取配置文件存入缓冲流,判断静态变量在缓冲流中是否存在, 并赋值的过程-具体实现:1.通过工具类获取properties文件流 存入Properties对象中2.获取...
  • 如使用spring的注解 @Scheduled 执行定时任务public interface IMyTestService {public void myTest();}@Componentpublic class MyTestServiceImpl implements IMyTestService {@Scheduled(cron="0 0 9 * * ? ")//...
  • 方法1:常规取法java本身就给我们提供了属性文件的读取方法,即java集合框架中的properties,详见这篇文章介绍http://www.voidcn.com/article/p-smdkvwvl-bop.html#2.方法2:通过spring注解读取1.工程中新建配置文件...
  • 一、使用注解@PropertySource指定路径使用 @PropertySource 指定配置文件路径,支持 properties 和 XML 的配置文件,但不...直接赋值:@Value("name jack")读取配置文件:@Value("${user.age}")指定默认值:@Value...
  • 方法1:常规取法java本身就给我们提供了属性文件的读取方法,即java集合框架中的properties,详见这篇文章介绍https://my.oschina.net/u/2312022/blog/748813#2.方法2:通过spring注解读取1.工程中新建配置文件2....
  • java配置是spring4.x推荐的配置方式,可以完全替代xml配置。1、注解 @Configuration...@Configuration作用在类上,相当于一个xml配置文件;@Bean作用在方法上,相当于xml配置中的UserServiceImplpackagecom.oy.servi...
  • Spring Boot获取文件总的来说有三种方式,分别...这三种注解可以配合着@PropertySource来使用,@PropertySource主要是用来指定具体的配置文件。@PropertySource解析@Target(ElementType.TYPE)@Retention(RetentionP...
  • 前段时间想利用spring的@Value注解的方法取得.properties文件的内容, 但是总是取不到值, 论坛发贴各种方法都试了还是没解决, 放上帖子地址:http://bbs.csdn.net/topics/390936459 等以后解决了会回来更新,希望有谁...
  • 1. 本帖内容 在用java作开发时,一般会选择使用xml文件作为配置文件,故而通过java工程读取配置文件则是必须掌握的知识;传统的C/C++通过File文件的方式或者说通过流的方式进行读写,过分的浪费内存与效率,且读写...
  • 现在给大家介绍一个通过注解读取配置文件的例子。 配置文件:resources/config.properties 内容如下: conf.plugin.key1=小米 conf.plugin.key2=小明 编写配置文件读取类:PluginConfig.java @Component @...
  • 1、application.properties 配置文件mail.username=xue@163.commail.password=xuemail.host=smtp.163.commail.smtp.auth=true2、给普通变量赋值,直接在变量上添加 @Value 注解import org.springframework.beans....
  • 一 前言本篇内容包括spring 运行时读取配置文件的多种方式和SpEl表达式入门基础;二运行时读取配置文件spring 运行时读取配置文件值提供了2种方式属性占位符(Property placeholder)。Spring表达式语言(SpEL)2.1 读取...
  • spring自3.1版本后,增加了新的注解@PropertySource,用于注解注入配置文件的属性以前,我们配置读取配置文件,一般都是在XML文件里面配置,其实,这不是很利于维护,毕竟要去XML里面找配置,还需要把对象注册为bean,让xml...
  • 这里顺带使用一下自定义注解方式,基于java 反射机制读取.properties格式文件。 demo的大致内容包含以下: 1.配置文件:config.properties url=http://www.hrsstd.com password= root username= zhanghuilong port ...
  • 之前在Spring中,我们介绍过如何获取properties配置文件的信息,如可以通过@PropertySource注解 那我们在Java中如何读取配置的properties文件呢,首先我们看一下我们的目录结果,如下图 我们在config.properties...
  • 1、application.properties 配置文件mail.username=xue@163.commail.password=xuemail.host=smtp.163.commail.smtp.auth=true2、给普通变量赋值,直接在变量上添加 @value 注解import org.springframework.beans....
  • 指定路径使用 @PropertySource 指定配置文件路径,支持 properties 和 XML 的配置文件,但不支持 yml...直接赋值:@Value("name jack")读取配置文件:@Value("${user.age}")指定默认值:@Value("${user.desc:default...
  • 文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下前言:读取配置文件参数的方法:@Value("${xx}")注解。但是@Value不能为static变量赋值,而且很多时候我们需要将...
  • 在sprigboot中,处理配置文件最好的方法是采用@ConfigurationProperties注解。该注解能方便的将配置文件中的属性配置到具体的对象中。 本文基于的springboot版本如下: plugins { id 'org.springframework.boot' ...
  • 在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xml配置文件中切换。 Spring2.x时代 随着JDK 1.5带来的注解支持,Spring2.x可以...
  • 不过如果要做到动态化这点,需要调整注解@WebService的运行时机。至少是RetentionPolicy.RUNTIME形式。UPDATE先不论题主是否已经找到其他方式来完成这样的需求,不一定是从注解的角度去解决的。我这里把我的思路说下...
  • 在ServletContextListener 的实现类中 使用Spring @Value 注解的方式读取配置文件我想向ServletContextListener中通过Spring @value 的方法读取 properties 配置文件信息,但是我开始的方法不行public class ...
  • 指定路径使用 @PropertySource 指定配置文件路径,支持 properties 和 XML 的配置文件,但不支持 yml...直接赋值:@Value("name jack")读取配置文件:@Value("${user.age}")指定默认值:@Value("${user.desc:default...
  • # 使用注解或其他静态注入的方法 这里不讨论思路:创建工具类 实现读取配置文件存入缓冲流,判断静态变量在缓冲流中是否存在, 并赋值的过程-具体实现:1.通过工具类获取properties文件流 存入Properties对象中2.获取...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 509
精华内容 203
关键字:

java读取配置文件注解

java 订阅