如何在Spring中的共享jar中导入属性文件?

时间:2014-07-21 14:39:53

标签: java spring

我想创建一个共享项目jar,它有一些服务。这些服务应该使用属性文件。

理想情况下,我只想在将共享jar作为依赖项添加到其他项目时使用这些服务。我不想进行任何进一步的配置,比如导入共享属性文件。

在共享jar中,我想使用Spring注入属性。但是我怎么能这样做呢?

项目公地/ SRC /主/ JAVA:

@Service
public class MyService {
    @Value("${property.value}") private String value;

    public String getValue() {
        return value;
    }
}

项目公地/ SRC /主/资源/ application.properties:

property.value=test

项目的web / SRC /主/ JAVA:

@Component
public class SoapService {
    @Autowired
    private MyService service;

    //should return "test"
    public String value() {
        return service.getValue();
    }
}

当我运行它时:

Illegal character in path at index 1: ${property.value}

因此,属性文件未解析。但是,如何在使用适当的服务时告诉spring自动使用它?

2 个答案:

答案 0 :(得分:3)

感谢Hank Lapidez的评论,添加以下声明解决了问题:

@Configuration
@PropertySource("classpath:appdefault.properties")
public CommonConfig {
    @Bean
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }
}

答案 1 :(得分:1)

你需要有一些变化:

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

在应用程序上下文xml文件中,或java配置程序中的等效文件(请参阅@PropertySource("classpath:my.properties"))。这应该在依赖于共享库的属性文件的任何模块中重复。