我用一个属性文件来存储一些配置属性,被访问的这样@Value:春天,自动装配从数据库
@Value("#{configuration.path_file}")
private String pathFile;
是否有可能(与Spring 3)使用相同的@Value
注释,但加载数据库而不是文件的属性?
我用一个属性文件来存储一些配置属性,被访问的这样@Value:春天,自动装配从数据库
@Value("#{configuration.path_file}")
private String pathFile;
是否有可能(与Spring 3)使用相同的@Value
注释,但加载数据库而不是文件的属性?
假设你已经在你的数据库中的存储键/值对的表:
定义新豆“applicationProperties” - 伪代码如下...
public class ApplicationProperties {
@AutoWired
private DataSource datasource;
public getPropertyValue(String key) {
// transact on your datasource here to fetch value for key
// SNIPPED
}
}
注入这个bean在需要的你的申请。如果你已经有一个dao /服务层,那么你就可以利用它。
虽然没有使用过spring 3,但我认为你可以,如果你制作一个从数据库中读取属性并用getter公开它们的bean。
谢谢,但应用程序已经注解了@Value注释,所以我想避免更改代码。你认为可以保留@Value(“#{configuration.path_file}”)并告诉Spring“嘿,当我使用#{configuration.path_file}我想让你调用ApplicationProperties.getPath_file·或类似的东西吗? 这样我就可以保持当前的代码不变 – 2010-05-02 09:54:08
什么是令人满意的依赖关系?是负责加载属性文件本身的类? – anger 2010-05-06 01:20:25
它的工作原理是使用@Bean。唯一的问题是DB值的改变是没有反映出来,因为这个值只被注入一次,因此保持了初始值,我想这是不可能的。 – 2010-05-08 19:37:25