Java 如何在Spring中导入共享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;

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

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

在共享jar中,我想使用
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();
    }
}

你有加载属性的配置吗?这里有一篇很好的博文:不,我应该吗?我希望在另一个项目中注入此服务时不必进行任何配置。是的,否则使用属性的模块将不知道应该加载这些属性。想想应用程序上下文是如何工作的。