Controller层使用@value注解获取不到properties属性值
說到@Value注解,用過的應該都知道,這是Spring3的一個注解,通過@value注解的方式獲取properties文件中的配置值,大大簡化了我們讀取配置文件的代碼。然而,最近在使用中發現在controller使用出現了獲取不到值的問題
經過排查發現父子容器的說法,
父子容器:
Spring容器 – 父容器
SpringMVC容器 – 子容器
父子容器的關系:子容器能夠訪問父容器的資源(bean), 如:Controller可以注入Service,但是:父容器不能訪問子容器的資源
子容器可以訪問父容器的對象,但是@Value并不會主動去父容器中查找配置文件屬性值。properties文件是在applicationContext.xml讀取的,這是現在的問題。
解決問題(給出如下兩種解決辦法):
1.在springmvc配置文件中也讀取properties文件,這樣controller就訪問自己容器中的數據。
在springmvc配置文件中加入此配置文件
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属性值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java基础day8
- 下一篇: IO与NIO