java - 如何在spring boot中按顺序加载@Configuration类

标签 java spring spring-boot configuration

我想按顺序加载@Configuration 类。我有两个配置类。我需要在 sampleconfiguration 类之前加载我的 SampleProperties 类。

我尝试了以下注释,但它没有按预期工作。

@AutoConfigureAfter(SampleProperties.class )
@AutoConfigureBefore(SampleConfiguration.class)

我已将我的配置类放在 diff 包中,以便按顺序读取配置类。使用 @Import 函数,我将我的配置类包含到我的应用程序中

我的主类:

@Import({SampleProperties.class,SampleConfiguration.class,}) 
public class SampleApplication{  

    public static void main(String[] args) {
        SpringApplication.run(SampleApplication.class, args);
    }
}

我的 SampleProperties 类

@Configuration
@AutoConfigureBefore(SampleConfiguration.class) 
@ConfigurationProperties("demo")
@Data
public class SampleProperties  {

    private String team;
    private int teamSize;
    private String teamLeader;

}

我的示例配置类:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef="sampleEntityManager", 
                       transactionManagerRef="sampleTransactionManager",
                       basePackages= {"com.example.demo.repo"})
@AutoConfigureAfter(SampleProperties.class)                    
public class SampleConfiguration {


    @Autowired
    Environment env;



    @Bean(name="sampleDataSource")
    @Primary
    public DataSource dmsDataSource() { 

         // functions
        return null;
    }


    @Primary
    @Bean(name = "sampleEntityManager")
    public LocalContainerEntityManagerFactoryBean dmsEntityManagerFactory(EntityManagerFactoryBuilder builder) {
      // functions
        return null;
    }

    @Primary
    @Bean(name = "sampleTransactionManager")
    public PlatformTransactionManager dmsTransactionManager(@Qualifier("sampleEntityManager") EntityManagerFactory entityManagerFactory) {
      // functions
        return null;
    }
}

谁能告诉我缺少什么以及哪里出错了?

最佳答案

我认为你必须使用 @Order 注释。

@Component
@Order(1)
public class SampleProperties {
   // code
}

@Component
@Order(2)
public class SampleConfiguration {
    // code
}

关于java - 如何在spring boot中按顺序加载@Configuration类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58538262/

相关文章:

java - Android:SQLite 无法在索引处绑定(bind)参数,因为索引超出范围

java - 将 SHA-512 哈希从 Java 转换为 Bash

java - Gson,无法序列化/反序列化类类型

java - 我可以使用 spring Remember-me 在浏览器重新启动后恢复浏览器 session 而不使用复选框吗

java - Spring MVC - 无法获取RequestDispatcher

java - Thymeleaf:更新表单提交表

java - 如何使用 elasticsearch 重命名实体中的 id 字段?

java - 在 Spring Boot 中使用 Java 配置在 bean 定义之外为 bean 别名

java - Spring 安全: Cant get really users logged in using SessionRegistry that shows expired ones

java - 双端队列根据其位置获取值