Java 如何在Spring中导入共享jar中的属性文件?
我想创建一个共享项目jar,它有一些服务。这些服务应该使用属性文件 理想情况下,我只是想在以后将共享jar作为依赖项添加到其他项目时使用这些服务。我不想做任何进一步的配置,比如导入共享属性文件等等 在共享jar中,我想使用Java 如何在Spring中导入共享jar中的属性文件?,java,spring,Java,Spring,我想创建一个共享项目jar,它有一些服务。这些服务应该使用属性文件 理想情况下,我只是想在以后将共享jar作为依赖项添加到其他项目时使用这些服务。我不想做任何进一步的配置,比如导入共享属性文件等等 在共享jar中,我想使用Spring注入属性。但是我该怎么做呢 project commons/src/main/java: @Service public class MyService { @Value("${property.value}") private String value;
Spring
注入属性。但是我该怎么做呢
project commons/src/main/java:
@Service
public class MyService {
@Value("${property.value}") private String value;
public String getValue() {
return value;
}
}
@Component
public class SoapService {
@Autowired
private MyService service;
//should return "test"
public String value() {
return service.getValue();
}
}
project commons/src/main/resources/application.properties:
property.value=test
project web/src/main/java:
@Service
public class MyService {
@Value("${property.value}") private String value;
public String getValue() {
return value;
}
}
@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}
因此,propertyfile没有解析。但是,我如何告诉spring在使用适当的服务时自动使用它呢?您需要对此进行一些修改:
<context:property-placeholder location="classpath:my.properties" ignore-unresolvable="true"/>
在应用程序上下文xml文件中,或java配置程序中的等效文件中(请参见
@PropertySource(“classpath:my.properties”)
)。这应该在依赖于共享库属性文件的任何模块中重复。感谢Hank Lapidez的评论,添加以下语句修复了问题:
@Configuration
@PropertySource("classpath:appdefault.properties")
public CommonConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
你有加载属性的配置吗?这里有一篇很好的博文:不,我应该吗?我希望在另一个项目中注入此服务时不必进行任何配置。是的,否则使用属性的模块将不知道应该加载这些属性。想想应用程序上下文是如何工作的。