@value 默认值为null,null的值是
目录
@值取值为空的问题@值取值为空原因分析一.@Value("${} ")的使用二.@Value{"#{}"}的使用
@Value取值为NULL的问题
在拦截器架构中,如果希望在程序中直接使用性能中定义的配置值,通常使用一下方式来获取:
@Value(${tag} )私有字符串标签值但是取值时,有时这个标签值为空,可能原因有:
使用静电或最后的修饰了标签值,如下:
私有静态字符串标记值;//错误私有最终字符串标记值;//错误类没有加上@组件(或者@服务等)
@Component //遗漏类TestValue{ @Value(${tag} )私有字符串标记值}类被新的新建了实例,而没有使用@自动连线
@组件类TestValue{ @Value(${tag} )私有字符串标记值}类测试{.测试值测试值=新测试值()}这个测试值中肯定是取不到值的,必须使用@自动连线:
类测试{ @自动连线测试值测试值}
@Value取值为NULL原因分析
有两种方式:
@Value("${} ")用于获取配置文件中的属性值,通常用于获取写在应用程序.属性中的内容;@Value("#{} ")其实是表达式语言表达式的值,可以表示常量的值,或者获取豆中的属性区别:
$ { property : default _ value }//属性对应外部配置文件,默认值,就是前面的值为空时的默认值 #{ obj.property?default_value } //SpEL表达式,对象代表对象
一.@Value(“${}”)的使用
@Value(${inputDir} )私有字符串输入目录;但有时候@Value("${} ")取值为空,可能是由下面几个原因造成的:
1.类没有交给spring管理,即没有加上@Component等注解
@服务公共类测试值{ @ Value( $ { input dir } )私有字符串输入目录;……2.使用 static或final修饰成员变量
@Value(${inputDir} )私有静态字符串输入目录;//错误,不能使用@值给静电成员变量赋值@Value(${inputDir} )私有最终字符串输入目录;//错误,不能使用@值给最后的成员变量赋值3.自己new了一个对象实例,而没有使用@Autowired注解
类测试{ @自动连线测试值测试值//测试值测试值=新测试值()//错误,自己新的的对象不能通过@值注解获取配置值。}
二.@Value{“#{}”}的使用
@ rest controller @ request mapping(/log in )@ component公共类log in controller { @ Value( # { 1 } )private int number;//获取数字1 @ Value( # { Spring Expression Language } )//获取字符串常量私有字符串str @ Value( # { data source . URL } )//获取豆的属性,数据源为弹簧管理的obj,不是配置文件中的配置项私有字符串jdbcUrl@ autowired私有数据源transactionManager事务管理器;@请求映射(登录)公共字符串登录(字符串名称,字符串密码)抛出FileNotFoundException { system。出去。println(数字);系统。出去。println(str);系统。出去。println(JDBC网址);返回"登录";}}运行结果
以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行它.
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。