2010-04-11 92 views
0

我用一个属性文件来存储一些配置属性,被访问的这样@Value:春天,自动装配从数据库

@Value("#{configuration.path_file}") 
private String pathFile; 

是否有可能(与Spring 3)使用相同的@Value注释,但加载数据库而不是文件的属性?

回答

2

假设你已经在你的数据库中的存储键/值对的表:

定义新豆“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 /服务层,那么你就可以利用它。

+0

谢谢,但应用程序已经注解了@Value注释,所以我想避免更改代码。你认为可以保留@Value(“#{configuration.path_file}”)并告诉Spring“嘿,当我使用#{configuration.path_file}我想让你调用ApplicationProperties.getPath_file·或类似的东西吗? 这样我就可以保持当前的代码不变 – 2010-05-02 09:54:08

+0

什么是令人满意的依赖关系?是负责加载属性文件本身的类? – anger 2010-05-06 01:20:25

+1

它的工作原理是使用@Bean。唯一的问题是DB值的改变是没有反映出来,因为这个值只被注入一次,因此保持了初始值,我想这是不可能的。 – 2010-05-08 19:37:25

1

虽然没有使用过spring 3,但我认为你可以,如果你制作一个从数据库中读取属性并用getter公开它们的bean。