文档章节

spring boot 注入 property的三种方式

安西都护府首席程序员
 安西都护府首席程序员
发布于 2017/07/13 15:51
字数 386
阅读 1152
收藏 56

            以前使用spring的使用要注入property要配置PropertyPlaceholder的bean对象。在springboot除  了这种方式以外还可以通过制定 配置ConfigurationProperties直接把property文件的 属性映射到 当前类里面。

@ConfigurationProperties(prefix = "mypro", merge = true, locations = { "classpath:my.properties" })

ConfigurationProperties prefix 属性指示property文件中属性的前缀是什么。我这里写的是mypro。

因此property文件的属性必须mypro.x.y=z的形式;

     配置好ConfigurationProperties 之后就可以把property文件的属性映射到当前类了。

mypro.a:1
mypro.b:2
abc.d:123

property 文件里面mypro前缀的有a 和b两个。因此我在当前类就可以新建这两个属性。

	private int a;
	private int b;

这些需要映射的属性一定要加上getter 和setter。因为spring是通过反射调用方法来修改属性值的

 

 

        以前使用spring注入property的方式也同样适用。以前是xml配置PropertyPlaceholder。现在使用@bean 或者直接@Component配置这个类。只要把PropertyPlaceholderConfigurer添加到bean工厂,就可以使用@Value 取值了。

@Component
public class MyPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer{

	public MyPropertyPlaceholderConfigurer(){
		
		
		 this.setIgnoreResourceNotFound(true);
	        final List<Resource> resourceLst = new ArrayList<Resource>();
	        resourceLst.add(new ClassPathResource("my.properties"));
	        this.setLocations(resourceLst.toArray(new Resource[]{}));
	}
	
}
@Value("abc.d")
	private String test;

 

        另外的一种方法跟第二种差不多的。更像以前的xml配置PropertyPlaceholder。只是现在的配置是用@Configuration标注的类,用@Bean标注要配置的bean对象;

@Configuration
public class Testproperties {
	
	
	@Bean
	public PropertyPlaceholderConfigurer properties(){
		
		
		  final PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer();
	        ppc.setIgnoreResourceNotFound(true);
	        final List<Resource> resourceLst = new ArrayList<Resource>();
	        resourceLst.add(new ClassPathResource("my.properties"));
	        ppc.setLocations(resourceLst.toArray(new Resource[]{}));
	        return ppc;
	}
	
}

© 著作权归作者所有

共有 人打赏支持
安西都护府首席程序员

安西都护府首席程序员

粉丝 33
博文 9
码字总数 3151
作品 0
武汉
CTO(技术副总裁)
加载中

评论(4)

star_seek
star_seek

引用来自“切丶克闹”的评论

还有一种最简单的,就是把property写在application.properties(YML也行),直接代码用@Value取就好
这样确实简单,但是property文件最后会越来越大,内容混杂难以管理,所以相对来说还是分开取值好点儿
切丶克闹
切丶克闹
还有一种最简单的,就是把property写在application.properties(YML也行),直接代码用@Value取就好
安西都护府首席程序员
安西都护府首席程序员
学习spring boot 加群145155309
Spring Boot整合Mybatis实例

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和...

英雄有梦没死就别停
06/27
0
0
Spring IOC的三种依赖注入方式

IOC为了处理类与类之间复杂关系而产生,通过控制反转与依赖注入思想将类与类之间的关系放到配置文件中,个各类都是相对独立存在的,类之间的调用关系由配置文件来实现。由此实现程序的松耦合...

hanzhankang
2014/01/24
0
0
spring学习4-bean配置文件

上篇简单介绍了一下bean配置文件注入简单的属性和复杂一点的类注入,今天说一下其他类型的注入。 spring中提供配置Bean有三种实例化的方式 类构造器实例化 静态工厂方法实例化 实例工厂方法实...

大嘴吃鸡腿
2014/03/17
0
0
Spring Boot 项目属性源加密 - Jasypt Spring Boot

Jasypt Spring Boot 为 Spring Boot 项目中的属性源(property sources)提供加密支持。 有三种方法可以在项目中集成 jasypt-spring-boot: 如果 Spring Boot 项目中使用了 @SpringBootAppli...

匿名
07/20
0
0
Jasypt Spring Boot 2.1.0,Spring Boot 项目属性源加密

Jasypt Spring Boot 2.1.0 已发布。Jasypt Spring Boot 为 Spring Boot 项目中的属性源(property sources)提供加密支持。 有三种方法可以在项目中集成 jasypt-spring-boot: 如果 Spring Boo...

淡漠悠然
07/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Cloud Gateway真的有那么差吗?

前言 Spring Cloud从一开始最受大家质疑的就是网关性能,那是由于Spring Cloud最初选择了使用Netflix几年前开源的Zuul作为基础,而高性能版的Zuul 2在经过了多次跳票之后,对于Spring这样的整...

Java小铺
41分钟前
1
0
SpringBoot远程调试,远程debug你的线上项目

开发环境中代码出错了,可以利用IDE的debug功能来进行调试。那线上环境出错呢? 一、假设我们的项目是部署在tomcat中,那我们就需要对tomcat进行一定对配置,配置如下。 1. windows系统中,找...

nonnetta
46分钟前
0
0
JAVA秒杀优化方向

秒杀优化方向 将请求尽量拦截在系统上游:传统秒杀系统之所以挂,请求都压倒了后端数据层,数据读写锁冲突严重,几乎所有请求都超时,流量虽大,下单成功的有效流量甚小,我们可以通过限流、...

小贱是个程序员
54分钟前
0
0
C# 统计字符串中大写字母和小写字母的个数

static void Main() { int count1 = 0; int count2 = 0; Console.WriteLine("请输入字符串"); string str = Convert.ToString(Consol......

熊二的爸爸是谁
56分钟前
0
0
分布式服务框架之远程通讯技术及原理分析

在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是...

老道士
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部