Spring Value注解

hello_world_wdq 2014-04-21 11:03:46
我在xml文件里配置了<context:property-placeholder location="classpath*:sysconfig.properties"/>;
sysconfig.properties里面的键值对是
attachment.filesystem.root=/usr/local/nginx/html/sitefiles/tcrc/
attachment.introduction.foreignproject=attachment/foreignproject/

.java里通过value注解
@Value("${attachment.filesystem.root}")
private String attachmentPath;
但是打印attachmentPath的值是${attachment.filesystem.root}而不是想要的/usr/local/nginx/html/sitefiles/tcrc/,求解
...全文
4021 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
嗜睡的码农 2017-01-08
  • 打赏
  • 举报
回复
引用 19 楼 love1988gt 的回复:
不可以让DispatcherServlet加载springmvc的配置那个文件, 改为让ContextLoaderListener容器中去加载配置文件,这样就可以获取到@value值了
这样做不太好吧,是不是14楼的做法更保险写
老板蛋炒饭 2016-02-22
  • 打赏
  • 举报
回复
14楼正解。。
love1988gt 2015-11-20
  • 打赏
  • 举报
回复
不可以让DispatcherServlet加载springmvc的配置那个文件, 改为让ContextLoaderListener容器中去加载配置文件,这样就可以获取到@value值了
guruiping 2015-11-12
  • 打赏
  • 举报
回复
我这也出现了这个问题 @Value("${coupon.timeout}") private String couponTimeOut; 读到的值是${coupon.timeout},而不是配置文件里的值,不知道楼主最后用什么办法解决的?
战国v2 2015-05-12
  • 打赏
  • 举报
回复
楼上正解. spring mvc有两个容器,如果要在controller里面用,需要在mvc配置文件里面(我的是spring-config-mvc.xml)配置.
qq_24815287 2014-12-25
  • 打赏
  • 举报
回复
涨涨见识......渣渣新人一枚(忧伤啊 感觉要白头了)
燚之四火 2014-12-25
  • 打赏
  • 举报
回复
楼上正解........
Owen292 2014-11-04
  • 打赏
  • 举报
回复
你肯定只在applicationContext.xml配置了ContextLoaderListener而没在dispatcher-servlet.xml里配置,要想在Controller里也通过@Value注入取值,在dispatcher-servlet.xml也得配置.试试吧...
no_studio 2014-10-21
  • 打赏
  • 举报
回复
1.你的java类要有注解标注,如:Component, Service, Controller 2. 在xml文件里要有<context:component-scan base-package="pakage_name" />
myy_19890306 2014-07-31
  • 打赏
  • 举报
回复
楼主这个问题问清楚了吗?我初入,对@value这个注解怎么取值都不是很清楚,求详解
  • 打赏
  • 举报
回复
这个功能要3.0以后的jar才行。 而且@Value要是org.springframework.beans.factory.annotation.Value的。
tony4geek 2014-04-21
  • 打赏
  • 举报
回复
<context:property-placeholder ... /> is the XML equivalent to the PropertyPlaceholderConfigurer.

Example: applicationContext.xml

<context:property-placeholder location="classpath:test.properties"/>  
Component class

 private @Value("${propertyName}") String propertyField;
tony4geek 2014-04-21
  • 打赏
  • 举报
回复
应该路径问题吧。 <context:property-placeholder location="classpath:datasource.properties,classpath:constant.properties"/>
hello_world_wdq 2014-04-21
  • 打赏
  • 举报
回复
先不结贴,这个问题我一定要弄清楚
小律律 2014-04-21
  • 打赏
  • 举报
回复
帮你顶一下楼主
tony4geek 2014-04-21
  • 打赏
  • 举报
回复
应该可以,你再试试这个。
hello_world_wdq 2014-04-21
  • 打赏
  • 举报
回复
我通过另外一种方法解决了: <util:map id="jdbc" map-class="java.util.HashMap" key-type="java.lang.String" value-type="java.lang.String"> <entry key="url" value="${attachment.filesystem.root}" /> </util:map> 也就是说通过xml读取.properties文件,然后在.java里: @Value("#{jdbc['url']}") 但是,如果我执意要直接从.java里读取.properties的键获取值,而不是这种 先在xml里读取.properties的值,在从java里读取xml里的值,该怎么半呢,或者还需要其他配置?
  • 打赏
  • 举报
回复
看你完整使用的类,已经具体的配置,都完整的话不会出错的。
hello_world_wdq 2014-04-21
  • 打赏
  • 举报
回复
引用 2 楼 rui888 的回复:
<context:property-placeholder ... /> is the XML equivalent to the PropertyPlaceholderConfigurer.

Example: applicationContext.xml

<context:property-placeholder location="classpath:test.properties"/>  
Component class

 private @Value("${propertyName}") String propertyField;
然后呢
hello_world_wdq 2014-04-21
  • 打赏
  • 举报
回复
引用 1 楼 rui888 的回复:
应该路径问题吧。 <context:property-placeholder location="classpath:datasource.properties,classpath:constant.properties"/>
不是路径问题,保证
加载更多回复(1)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧