当前位置: 首页 > 知识库问答 >
问题:

Spring-Boot多模块项目加载属性文件

薛烨
2023-03-14
Parent-Project
|--MainApplication
|--Module1
|--ModuleN
@Value("${myapp.api-key}")
private String apiKey;
@Configuration
@PropertySource(value = "classpath:module1.properties")
public class ConfigClass {
@Configuration
@PropertySource(value = "classpath:tmdb.properties")
public class TMDbConfig {

    @Value("${moviedb.tmdb.api-key}")
    private String apiKey;

    public String getApiKey() {
        return apiKey;
    }

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

调用配置

@Component
public class TMDbWarper {

@Autowired
private TMDbConfig tmdbConfig;

private TmdbApi tmdbApi;

public TMDbWarper(){
    tmdbApi = new TmdbApi(tmdbConfig.getApiKey());
}

我在构造函数中得到了一个NullPointerException。

共有1个答案

许典
2023-03-14

对于现场注入:

字段是在构建bean之后,在调用任何配置方法之前注入的。这样的配置字段不必是公共的。有关完整用法,请参阅Autowired注释。在这种情况下使用构造函数注入,如下所示:

@Component
public class TMDbWarper {

    private TMDbConfig tmdbConfig;

    private TmdbApi tmdbApi;

    @Autowired
    public TMDbWarper(final TMDbConfig tmdbConfig){
            this.tmdbConfig = tmdbConfig;
            tmdbApi = new TmdbApi(tmdbConfig.getApiKey());
    }

(或)

@Component
public class TMDbWarper {

    @Autowired
    private TMDbConfig tmdbConfig;

    private TmdbApi tmdbApi;

    @PostConstruct
    public void init() {
        // any initialisation method
        tmdbConfig.getConfig();
    }
 类似资料:
  • 是否可以从多模块项目的父模块中的文件夹加载多个Spring-Boot.yml配置文件? 结构如下所示: 我们知道这是正确的:但这不是意味着已经在类路径中了吗? 用于证明的示例项目:https://github.com/djangofan/spring-boot-maven-multi-module-example。克隆它,如果你认为你能解决它就修改它。

  • 我正在尝试创建一个多模块的项目,包含两个模块,核心和Web。它们都是我在Spring Initialzer上生成的Spring Boot项目。我设置了Maven POM文件,但在部署它时遇到了问题。然而,我很困惑配置是如何工作的。 核心模块将包含域对象/实体、Spring数据JPA存储库、服务,并将打包为一个JAR。Web模块将具有Spring Security、控制器和视图。它将被包装成一场战争

  • 我正在尝试创建一个多模块spring boot项目(Struts2/Ibatis项目的重写),我希望如下所示: 我如何设置每个pom,以便: 非常感谢。

  • 我们正在多模块项目中使用spring boot。 我们有一个域访问模块,它具有公共的域对象类、存储库,以及数据源、JPA、Hibernate等配置,这些都是使用application.properties配置的。我们将所有这些配置放入公共模块中,以避免在更高级模块中重复这些公共配置。 在构建域模块时,这一切都运行良好,因此在测试单元中正确地加载了配置。 由于我们正在使用spring-boot,因此

  • 我有以下Maven项目结构: i、 e.Project1、Project2和Project3在目录结构上是对等的,它们都是Spring Boot应用程序(JAR)。我想将Project2和Project3视为Project1的子项,而不改变目录结构。当我在父项目上执行相同的maven命令时,我需要在子项目上过渡地执行所有maven命令。而且最重要的是,我应该能够将它们打包到一个JAR文件中。我在谷

  • 想象一个多模块的Maven-Project。项目结构为: 例如,submodule_5具有submodule_6和submodule_7作为依赖项。可以构建子模块5来构造一个可以部署的WAR文件。Spring-Boot-Devtools提供了每当submodule_5的类路径发生变化时自动重启的特性。 无论何时使用以下方法运行应用程序: 并且对submodule_5进行了更改(取决于您使用的IDE