欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Controller层使用@value注解获取不到properties属性值

发布时间:2025/3/12 编程问答 28 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Controller层使用@value注解获取不到properties属性值 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

说到@Value注解,用过的应该都知道,这是Spring3的一个注解,通过@value注解的方式获取properties文件中的配置值,大大简化了我们读取配置文件的代码。然而,最近在使用中发现在controller使用出现了获取不到值的问题

经过排查发现父子容器的说法,

父子容器:

Spring容器 – 父容器

SpringMVC容器 – 子容器

父子容器的关系:子容器能够访问父容器的资源(bean), 如:Controller可以注入Service,但是:父容器不能访问子容器的资源

子容器可以访问父容器的对象,但是@Value并不会主动去父容器中查找配置文件属性值。properties文件是在applicationContext.xml读取的,这是现在的问题。

解决问题(给出如下两种解决办法):

1.在springmvc配置文件中也读取properties文件,这样controller就访问自己容器中的数据。
在springmvc配置文件中加入此配置文件

<context:property-placeholder location="classpath:config/properties/xx.properties" />

2.在父容器中注册一个Bean,然后把配置文件的值注入到这个Bean中,然后子容器可以访问到这个bean,自然可以访问到属性。

因为Service层的对象是有Spring容器创建,因此我们定义一个Service: PropertiesService,注入进来属性用public修饰

@Service public class PropertyService {@Value("${PAGENUM}")public int PAGENUM; }

在controller注入:

@Autowired private PropertyService propertyService;

再通过 propertyService.PAGENUM获取

总结

以上是生活随笔为你收集整理的Controller层使用@value注解获取不到properties属性值的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。