내 응용 프로그램에서 모든 스프링 응용 프로그램 컨텍스트를 일반적인 방식으로 구성하려고합니다.
나는 ConcretteDSConfiguration
같은IllegalArgumentException : 가져 오기 클래스에 @EnableTransactionManagement가 없습니다.
@Configuration
@EnableTransactionManagement
public class GeneralDSConfiguration implements InitializingBean {
private String databaseURL;
private String databaseUserName;
private String databasePassword;
public GeneralDSConfiguration(String databaseURL, String databaseUserName, String databasePassword) {
this.databaseURL = databaseURL;
this.databaseUserName = databaseUserName;
this.databasePassword = databasePassword;
}
@Override
public void afterPropertiesSet() throws Exception {
Assert.hasText(databaseURL);
}
@Bean
public DataSource dataSource() {
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("org.postgresql.Driver");
ds.setAccessToUnderlyingConnectionAllowed(true);
ds.setUrl(databaseURL);
ds.setUsername(databaseUserName);
ds.setPassword(databasePassword);
return ds;
}
@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
여러 개의 클래스는 애플리케이션 컨텍스트를 구축하는 데 사용되는 일반적인 구성을하다 GeneralDSConfiguration
클래스가 있습니다. 내가 new AnnotationConfigApplicationContext(ConcretteDSConfiguration.class)
와 애플리케이션 컨텍스트를로드 할 때
@Configuration
public class ConcretteDSConfiguration extends GeneralDSConfiguration {
public ConcretteDSConfiguration() {
super("jdbc:postgresql://localhost/database", "postgres", "");
}
}
는, IllegalArgumentException가 슬로우됩니다 내가 ConcretteDSConfiguration
클래스에 @EnableTransactionManagement
주석을 넣으면 때문에
Exception in thread "main" java.lang.IllegalArgumentException: @EnableTransactionManagement is not present on importing class 'foo.bar.ConcretteDSConfiguration' as expected
at org.springframework.util.Assert.notNull(Assert.java:112)
at org.springframework.context.annotation.AdviceModeImportSelector.selectImports(AdviceModeImportSelector.java:72)
at org.springframework.context.annotation.ConfigurationClassParser.processImport(ConfigurationClassParser.java:328)
at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:232)
at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:153)
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:139)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:282)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:223)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:630)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:461)
at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:73)
그것은 모든 상속 함께 definitelly의 모든 것이 잘 작동 . 하지만 일반 구성을 작성하는 방법을 찾으려고하고 모든 구성 클래스에이 주석을 넣고 싶지 않습니다.
제안 사항이 있으십니까?