springboot如何获取配置文件中的值,springboot获取配置参数

  springboot如何获取配置文件中的值,springboot获取配置参数

  

目录

跳靴配置和占位符获取配置文件值@财产来源加载指定的配置文件@导入资源导入指定的配置文件跳羚配置文件,占位符的使用首先要给到注解配置文件运行最后一个测试类测试如下

 

  

springboot配置和占位符获取配置文件值

 

  

@PropertySource 加载指定的配置文件

包com。举例。春季开机演示。POJO导入com。阿里巴巴。快速JSON。JSON导入org。spring框架。靴子。语境。属性。配置属性;导入org。spring框架。语境。注释。财产来源;导入org。spring框架。刻板印象。组件;/* * * * * * *好运* * * * * * * @作者: Wukn * @日期: 2018/6/* *将配置文件中的的每一个属性的值,映射到这个组建中* @配置属性*前缀=persion 指定在配置文件中需要将确定安全的配置属性映射到这个实体类中*//** * 获取指定配置文件* @ property source(value={ class path : coms。properties })*/@ Component/* * * * @配置属性(前缀= persion ),默认获取根目录下的值*/@配置属性(前缀= person )public class person { private String name;私有整数id;私有布尔bool public person(){ } public String getName(){ return name;} public void set name(String name){ this。name=名称;}公共整数getId(){返回id;} public void setId(Integer id){ this。id=id}公共布尔get bool(){ return bool;} public void set bool(布尔型bool){ this。bool=bool} @覆盖公共字符串toString(){返回JSON。tojsonstring(这个);}}

 

  

@ImportResource导入指定的配置文件

 

  以上方式过于麻烦,跳靴推荐通过全注解方式,添加组件的方式

  通过注解@配置申明一个配置类,通过注解@Bean可以使用在方法上面,申明一个组件的生成,要是放在方法上,表明这个方法的返回值放在国际奥委会容器中

  包com。举例。春季开机演示。配置;导入com。更快的XML。杰克逊。注释。jsonautodetect导入com。更快的XML。杰克逊。注释。属性访问器;导入com。更快的XML。杰克逊。数据绑定。对象映射器;导入org。spring框架。语境。注释。豆;导入org。spring框架。语境。注释。配置;导入org。spring框架。数据。雷迪斯。联系。redisconnectionfactory导入org。spring框架。数据。雷迪斯。核心。redis模板;导入org。spring框架。数据。雷迪斯。序列化程序。杰克逊2 JSON红

  isSerializer;/** * Created with IntelliJ IDEA. * Description: Cms数据源的一些设置 * Date: 2018-06-08 * Time: 5:50 PM * * @author: wukn */@Configurationpublic class DataConfig { @Bean public RedisTemplate redisTemplate(RedisConnectionFactory factory) { RedisTemplate template = new RedisTemplate(); template.setConnectionFactory(factory); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility( PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping( ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); template.setValueSerializer(jackson2JsonRedisSerializer); template.afterPropertiesSet(); return template; } }通过占位符获取值

  

 #通过使用占位符赋值persion.name=张三${random.value}persion.bool=falsepersion.id=12${random.int} person.last‐name=张三${random.uuid}person.age=${random.int} person.birth=2017/12/15 person.boss=false person.maps.k1=v1 person.maps.k2=14 person.lists=a,b,c person.dog.name=${person.hello:hello}_dog person.dog.age=15

 

  

springboot配置文件,占位符的使用

 

  

首先要给到注解

让user类可用通过配置文件进行实例化

 

  

 

  

package com.example.springdemo.entity;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;import org.springframework.stereotype.Component;import org.springframework.validation.annotation.Validated; import java.util.List; @Component//把User加到容器中@Data/** * @ConfigurationProperties * 可以将配置文件中的每一个属性的值,映射到这个组件中 * 告诉springboot将奔雷中的所有属性和配置文件中的相关属性先绑定 * prefix = "com"绑定配置文件com层级下的属性进行一一映射 * 只有是容器才能使用所以要添加注解@Component */@ConfigurationProperties(prefix = "com")public class User { private Long id; private String name; private Integer age; private List<Object>list; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge(int i) { return age; } public void setAge(Integer age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } private String email; public Integer getAge() { return age; } public List<Object> getList() { return list; } public void setList(List<Object> list) { this.list = list; }}

 

  

配置文件

com.email=99@dfp.comcom.name=newDFP${com.cc:不存在给默认值}com.age=${random.int}

首先就是对age取随机数然后对name获取对象的数据

 

  

 

  

运行最后一个测试类

package com.example.springdemo; import com.example.springdemo.entity.User;import com.example.springdemo.mapper.UserMapper;import com.example.springdemo.properties.Myproperties;import org.junit.jupiter.api.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.context.ApplicationContext;import org.springframework.test.context.junit4.SpringRunner; import javax.sql.DataSource;import java.sql.SQLException;import java.util.List; @SpringBootTest@RunWith(SpringRunner.class)class SpringdemoApplicationTests { //如果测试类与启动入口类包名不一致,必须加该注解属性classes指定启动入口类,否则无法启动SpringBoot @Autowired private DataSource dataSource; @Test public void dataSource() { try { System.out.println(dataSource.getConnection()); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Autowired Myproperties myproperties; @Test void test(){ System.out.println("------------------------"); System.out.println(myproperties.getMes()); } @Autowired UserMapper userMapper; @Test void testMybatisPlus(){ List<User> users=userMapper.selectList(null); for (User user:users){ System.out.println(user); } System.out.println("查询成功!"); User aduuser=new User();// aduuser.setName("DFP");// aduuser.setAge(18);// aduuser.setEmail("DFP19053025@qq.com");// aduuser.setId(19053065L); int i=userMapper.insert(aduuser); if (i>0){ System.out.println("成功加入记录!"); }else{ System.out.println("失败加入记录!");} for (User user:users){ System.out.println(user); } } @Autowired User user; @Test public void contextlodes(){ System.out.println("测试结果输出:"+user); }}

结果

 

  

 

  因为com.cc是不存在的就回去:后面的默认值

  如果com.cc存在就会取com.cc的值

  

 

  

测试如下

com.email=99@dfp.comcom.name=newDFP+++${com.email:不存在给默认值}com.age=${random.int}

这次的值不再是默认值了com.email是存在数据的

 

  

 

  以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行IT。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: