Pol*_*878 30 java spring spring-mvc
所以,我有一个简单的属性文件,其中包含以下条目:
my.value=123
another.value=hello world
Run Code Online (Sandbox Code Playgroud)
使用a加载此属性文件PropertyPlaceHolderConfigurer,该文件引用上面的属性文件.
我有以下类,我正在尝试加载这些属性,如下所示:
public class Config
{
@Value("${my.value}")
private String mValue;
@Value("${another.value}")
private String mAnotherValue;
// More below...
}
Run Code Online (Sandbox Code Playgroud)
问题是,mValue并且mAnotherValue总是为空...但在我的控制器中,正在加载的值很好.是什么赋予了?
小智 27
我有类似的问题,但是春天的新手.我试图将属性加载到@Service,并尝试使用@Value来检索属性值...
@Autowired
public @Value("#{myProperties['myValue']}") String myValue;
Run Code Online (Sandbox Code Playgroud)
我花了一整天尝试各种注释组合,但它总是返回null.最后,答案一如既往地显而易见.
1)确保Spring通过在servlet.xml中包含包层次来扫描你的类以进行注释(它将扫描你插入的基值以下的所有内容.
2)确保你不是刚刚告诉Spring要看的课程.相反,你在@Controller类中使用@Autowire.
Spring中的所有内容都是Singleton,发生了什么是Spring将值加载到它的Singleton中,然后我'new'ed该类的另一个实例,它不包含新加载的值,所以它总是为null.
而是在@Controller中使用...
@Autowired
private MyService service;
Run Code Online (Sandbox Code Playgroud)
调试......我做的一件事就是按照以下方式扩展我的服务......
@Service
public class MyService implements InitializingBean
Run Code Online (Sandbox Code Playgroud)
然后在...中输入调试语句
@Override
public void afterPropertiesSet() throws Exception {
// TODO Auto-generated method stub
LOGGER.debug("property myValue:" + myValue);
}
Run Code Online (Sandbox Code Playgroud)
在这里我可以看到在初始化时设置的值,后来当我在一个方法中打印它时它是null,所以这对我来说是一个很好的线索,它不是同一个实例.
这个错误的另一个线索是Tomcat抱怨Timeout试图从Socket中读取无法解析HTTPheader ......这是因为Spring创建了一个服务实例,所以我也是,所以我的那个人正在做真正的工作,而春天的实例已超时.
| 归档时间: |
|
| 查看次数: |
52673 次 |
| 最近记录: |