iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >@Value取值为NULL怎么解决
  • 122
分享到

@Value取值为NULL怎么解决

2023-07-02 16:07:25 122人浏览 泡泡鱼
摘要

这篇文章主要讲解了“@Value取值为NULL怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“@Value取值为NULL怎么解决”吧!@Value取值为NULL的问题在spring m

这篇文章主要讲解了“@Value取值为NULL怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“@Value取值为NULL怎么解决”吧!

@Value取值为NULL的问题

spring mvc架构中,如果希望在程序中直接使用properties中定义的配置值,通常使用一下方式来获取:

    @Value("${tag}")    private String tagValue;

但是取值时,有时这个tagvalue为NULL,可能原因有:

使用static或final修饰了tagValue,如下:

    private static String tagValue;  //错误    private final String tagValue;    //错误

类没有加上@Component(或者@service等)

    @Component   //遗漏    class TestValue{         @Value("${tag}")         private String tagValue;    }

类被new新建了实例,而没有使用@Autowired 

   @Component       class TestValue{         @Value("${tag}")         private String tagValue;    }    class Test{        ...        TestValue testValue = new TestValue()    }

这个testValue中肯定是取不到值的,必须使用@Autowired:

class Test{        @AutoWired        TestValue testValue    }

@Value取值为NULL原因分析

有两种方式:

  • @Value(“${}”)用于获取配置文件中的属性值,通常用于获取写在application.properties中的内容;

  • @Value(“#{}”) 其实是SpEL表达式的值,可以表示常量的值,或者获取bean中的属性

区别:

  • ① ${ property : default_value } //property对应外部配置文件,default_value,就是前面的值为空时的默认值。

  • ② #{ obj.property? :default_value } //SpEL表达式,obj代表对象

一.@Value(“${}”)的使用

 @Value("${inputDir}") private String inputDir;

但有时候@Value(“${}”)取值为NULL,可能是由下面几个原因造成的: 

1.类没有交给spring管理,即没有加上@Component等注解

@Servicepublic class TestValue{    @Value("${inputDir}")    private String inputDir;    ……    }

2.使用 static或final修饰成员变量

@Value("${inputDir}")private static String inputDir;//错误,不能使用@Value给static成员变量赋值@Value("${inputDir}")private final String inputDir;//错误,不能使用@Value给final成员变量赋值

3.自己new了一个对象实例,而没有使用@Autowired注解

class Test{    @AutoWired    TestValue testValue    //TestValue testValue = new TestValue()//错误,自己new的对象不能通过@Value注解获取配置值。}

二. @Value{“#{}”}的使用

@RestController@RequestMapping("/login")@Componentpublic class LoginController {@Value("#{1}")private int number; //获取数字 1@Value("#{'Spring Expression Language'}") //获取字符串常量private String str;@Value("#{dataSource.url}") //获取bean的属性,dataSource为spring管理的obj,不是配置文件中的配置项private String jdbcUrl;@Autowiredprivate DataSourceTransactionManager transactionManager; @RequestMapping("login")public String login(String name,String passWord) throws FileNotFoundException{System.out.println(number);System.out.println(str);System.out.println(jdbcUrl);return "login";}}

运行结果

@Value取值为NULL怎么解决

感谢各位的阅读,以上就是“@Value取值为NULL怎么解决”的内容了,经过本文的学习后,相信大家对@Value取值为NULL怎么解决这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: @Value取值为NULL怎么解决

本文链接: https://www.lsjlt.com/news/342984.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作