【问题标题】:how to load @Configuration classes in an order in spring boot如何在spring boot中按顺序加载@Configuration类
【发布时间】:2020-02-20 14:39:04
【问题描述】:

我想按顺序加载@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;
    }
}

谁能告诉我遗漏了什么以及哪里出错了?

【问题讨论】:

  • 我认为这里有答案:stackoverflow.com/questions/44314418/…
  • 我也试过了。但不工作
  • 您的SampleProperties 不是(或应该)是@Configuration 对象。它应该是@Component@AutoConfigure 也无济于事,因为它不是自动配置。为什么排序如此重要?
  • 也许你可以尝试使用@Order。我认为它也适用于@Configuration,而不仅仅是@Component

标签: java spring spring-boot configuration


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-14
    • 2021-08-19
    • 1970-01-01
    • 2020-05-03
    • 2019-11-24
    • 2020-10-17
    • 2022-01-13
    • 2017-05-12
    相关资源
    最近更新 更多