Controller层使用@value注解获取不到properties属性值
說(shuō)到@Value注解,用過(guò)的應(yīng)該都知道,這是Spring3的一個(gè)注解,通過(guò)@value注解的方式獲取properties文件中的配置值,大大簡(jiǎn)化了我們讀取配置文件的代碼。然而,最近在使用中發(fā)現(xiàn)在controller使用出現(xiàn)了獲取不到值的問(wèn)題
經(jīng)過(guò)排查發(fā)現(xiàn)父子容器的說(shuō)法,
父子容器:
Spring容器 – 父容器
SpringMVC容器 – 子容器
父子容器的關(guān)系:子容器能夠訪問(wèn)父容器的資源(bean), 如:Controller可以注入Service,但是:父容器不能訪問(wèn)子容器的資源
子容器可以訪問(wèn)父容器的對(duì)象,但是@Value并不會(huì)主動(dòng)去父容器中查找配置文件屬性值。properties文件是在applicationContext.xml讀取的,這是現(xiàn)在的問(wèn)題。
解決問(wèn)題(給出如下兩種解決辦法):
1.在springmvc配置文件中也讀取properties文件,這樣controller就訪問(wèn)自己容器中的數(shù)據(jù)。
在springmvc配置文件中加入此配置文件
2.在父容器中注冊(cè)一個(gè)Bean,然后把配置文件的值注入到這個(gè)Bean中,然后子容器可以訪問(wèn)到這個(gè)bean,自然可以訪問(wèn)到屬性。
因?yàn)镾ervice層的對(duì)象是有Spring容器創(chuàng)建,因此我們定義一個(gè)Service: PropertiesService,注入進(jìn)來(lái)屬性用public修飾
@Service public class PropertyService {@Value("${PAGENUM}")public int PAGENUM; }在controller注入:
@Autowired private PropertyService propertyService;再通過(guò) propertyService.PAGENUM獲取
總結(jié)
以上是生活随笔為你收集整理的Controller层使用@value注解获取不到properties属性值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java基础day8
- 下一篇: IO与NIO