如何在控制器功能中使用spring配置类

时间:2015-07-10 03:03:27

标签: java spring spring-mvc

我通过谷歌搜索了多个页面。它告诉您如何通过注释加载配置。但是教程总是忘记如何在控制器中使用创建的对象。

这是我的代码。

属性文件(demo.properties)

demo.out_path=c:\demo_dir

演示配置文件(DemoAppConfig.java)

@Configuration
@PropertySource("classpath:demo.properties")
public class DemoAppConfig {

    @Value("${demo.out_path}")
    private String OutPath;

    @Bean
    public static PropertySourcesPlaceholderConfigurer propertyConfigInDev() {
        return new PropertySourcesPlaceholderConfigurer();
    }
}

Servlet配置(demo-servlet.xml)

<!-- Properties -->
<context:property-placeholder location="classpath:demo.properties" ignore-unresolvable="true"  />

如何调用控制器内的属性?我尝试将DemoAppConfig的自动连线注释作为属性但它失败了。我尝试将DemoAppConfig实例化为一个新类,但未加载所有属性。

注意:使用的是Spring版本4.1.7.RELEASE

2 个答案:

答案 0 :(得分:1)

我知道一种方法是在xml配置中配置系统属性,如下所示:

rhc cartridge remove -a {appName} -c {embeddedCartridgeName}

当然,您需要添加spring-util架构声明:

<util:properties id="systemPropertyLookup" location="classpath:demo.properties"/>

然后将属性值注入控制器,如下所示:

<beans ....
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="....
http://www.springframework.org/schema/util/spring-util.xsd">

答案 1 :(得分:1)

检查我的项目,这就是我加载persistence.properties的方式,我已经能够像您配置的一样使用@Value

@Configuration
@ComponentScan(basePackageClasses = Application.class)
class ApplicationConfig {

    @Bean
    public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
        PropertySourcesPlaceholderConfigurer ppc = new PropertySourcesPlaceholderConfigurer();
        ppc.setLocation(new ClassPathResource("/persistence.properties"));
        return ppc;
    }

}

确保它在类路径上,并且编译器将资源文件复制到distributable。