как загрузить классы @Configuration в порядке весенней загрузки - PullRequest
3 голосов
/ 24 октября 2019

Я хотел бы загрузить классы @Configuration в порядке. у меня есть два класса конфигурации. У меня есть требование загрузки моего класса SampleProperties перед классом sampleconfiguration.

Я пробовал следующие аннотации, но они не работают должным образом.

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

Я поместил свой класс congiurations впакет diff для чтения классов конфигурации в функции order.using @ 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;
    }
}

Может кто-нибудь сказать мне, что пропалоа где совершаю ошибки?

1 Ответ

1 голос
/ 24 октября 2019

Я думаю, вам нужно использовать @Order аннотацию.

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

@Component
@Order(2)
public class SampleConfiguration {
    // code
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...