本篇文章小编给大家分享一下使用springboot配置和占位符获取配置文件中的值代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
@PropertySource& 加载指定的配置文件
package com.example.springbootdemo.pojo; import com.alibaba.fastjson.JSON; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; /** * ***GOOD LUCK**** * * @Author : Wukn * @Date : 2018/6/ * * 将配置文件中的的每一个属性的值,映射到这个组建中 *@ConfigurationProperties * prefix = "persion" 指定在配置文件中需要将persion的配置属性映射到这个实体类中 */ /** * 获取指定配置文件 * @PropertySource( value = {"classpath:coms.properties"}) */ @Component /** * @ConfigurationProperties(prefix = "persion"),默认获取根目录下的值 */ @ConfigurationProperties(prefix = "persion") public class Persion { private String name; private Integer id; private Boolean bool; public Persion() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Boolean getBool() { return bool; } public void setBool(Boolean bool) { this.bool = bool; } @Override public String toString() { return JSON.toJSONString( this ); } }
@ImportResource 导入指定的配置文件
以上方式过于麻烦,springboot推荐通过全注解方式,添加组件的方式
通过注解@Configration申明一个配置类,通过注解@Bean可以使用在方法上面,申明一个组件的生成,要是放在方法上,表明这个方法的返回值放在ioc容器中
package com.example.springbootdemo.configration; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; /** * Created with IntelliJ IDEA. * Description: Cms数据源的一些设置 * Date: 2018-06-08 * Time: 5:50 PM * * @author: wukn */ @Configuration public 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=false persion.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
配置文件
[email protected] com.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(){ Listusers=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("[email protected]"); // 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的值
测试如下
[email protected] com.name=newDFP+++${com.email:不存在给默认值} com.age=${random.int}
这次的值不再是默认值了com.email是存在数据的
忍者必须死34399账号登录版 最新版v1.0.138v2.0.72
下载勇者秘境oppo版 安卓版v1.0.5
下载忍者必须死3一加版 最新版v1.0.138v2.0.72
下载绝世仙王官方正版 最新安卓版v1.0.49
下载Goat Simulator 3手机版 安卓版v1.0.8.2
Goat Simulator 3手机版是一个非常有趣的模拟游
Goat Simulator 3国际服 安卓版v1.0.8.2
Goat Simulator 3国际版是一个非常有趣的山羊模
烟花燃放模拟器中文版 2025最新版v1.0
烟花燃放模拟器是款仿真的烟花绽放模拟器类型单机小游戏,全方位
我的世界动漫世界 手机版v友y整合
我的世界动漫世界模组整合包是一款加入了动漫元素的素材整合包,
我的世界贝爷生存整合包 最新版v隔壁老王
我的世界MITE贝爷生存整合包是一款根据原版MC制作的魔改整