SpringEl表达式,以及Property文件属性的注解注入到bean中

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1.SpringEL表达式

    详情请参考:http://www.cnblogs.com/leiOOlei/p/3543222.html

2.关于Spring中#{}与${}的区别

    #{}是SrpingEl表达式的语法规则.

            例如:#{bean.属性?:默认值},注意bean.属性必须是要存在的,当为null时匹配

    ${}是Spring占位符的语法规则,请注意它是否能用,跟bean的初始化时间有关.   (参考1, 参考2)

            例如:${属性:默认值},如果属性为null或者不存在的话,就是用默认值填充

3.如何将Property文件的属性直接注入到bean类的属性中?

解决办法之一

#先定义properties
username=username
password=123456


// 这里是赋值的示例
@Component
public class AnnoProperty {

//	@Value("${test.username}")// 注意这样是错误的.$符号不是El表达式的取值方式.
//	@Value("#{test.xxx.other}")// 注意这样是错误的,"."这个点不能连续使用.不知道怎么转义
//	@Value("#{test.username2?:'默认的username'}") // 注意这样是错误的,如果想使用默认值你需要确保test这类以及username这个属性必须存在
	@Value("#{test.username?:'默认的username'}")
	private String userName;
	
	@Value("#{test.password}")
	private Integer password;
	
	// getter and setter
    // ....
}

解决办法之二

#先定义properties
username=username
password=123456
	
	
		
			
				
				classpath:spel/test.properties
			
		
	
	
    
// 你也可直接在注解中使用
@Component
public class AnnoProperty {

	// 注意这是占位符方式注入,所以$开头,且没有test这个对象
	@Value("${username}") 
	private String userName;
	
//	@Value("${other.undefindValue}") // 直接使用属性名称输入
//	@Value("${xxxxx:other.undefindValue}") // 当xxxxx不存在时,使用other.undefindValue进行赋值
	@Value("${xxxxx:123}") // 当xxxxx不存在时,使用other.undefindValue进行赋值
	private Integer password;
	
	@Value("${other.undefindValue}")
	private String undefindValue;
	
	// getter and setter
    // ....
}

如果你参照这种方式还是不能实现的话,可以参考下面是替代方案.

// 这是必须加入到容器,不然没法注入。如果你是xml配置的话就不建议这样麻烦了
@Component
// 申明bean需要使用的resource
@PropertySource("classpath:config.properties") 
public class ClazzName{
	// 获取resource
    @Autowired private Environment environment; 
    /** 获取config配置文件 */
	public String getStr(String key){
		return environment.getProperty(key);
    }
}

参考地址:

http://sunjun041640.blog.163.com/blog/static/256268322013112325324373/
http://www.myexception.cn/software-architecture-design/428277.html(配置文件加解密)

可能遇到的问题:

https://my.oschina.net/u/1455908/blog/215953

欢迎转载,本文地址:https://my.oschina.net/longfong/blog/800969

 

转载于:https://my.oschina.net/longfong/blog/808615

你可能感兴趣的:(SpringEl表达式,以及Property文件属性的注解注入到bean中)