我想创建一个共享项目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自动使用它?
答案 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")
)。这应该在依赖于共享库的属性文件的任何模块中重复。