@ComponentScan
я использовал на Application
класса и использовать @Configuration
в моем классе конфигурации, в моем классе конфигурации, я хочу, чтобы ввести фасоль, определенные в другом классе конфигурации с помощью @Autowired
аннотацию , но когда я запускаю приложение, я получил null для этих полей.Spring загрузки - @Autowired не работает на классе @Configuration
@Configuration
public class AConfiguration {
@Bean
public A getA(){
return ..;
}
}
@Configuration
public class BConfiguration {
@Autowired
private A a;
@Bean
public B getB() {
**something need a, but a is null**
}
}
@EnableCaching
@Configuration
public class EhcacheConfiguration extends CachingConfigurerSupport {
@Bean
@Override
public CacheManager cacheManager() {
return new EhCacheCacheManager(ehCacheCacheManager().getObject());
}
@Bean
public EhCacheManagerFactoryBean ehCacheCacheManager() {
EhCacheManagerFactoryBean cmfb = new EhCacheManagerFactoryBean();
cmfb.setConfigLocation(new ClassPathResource("ehcache.xml"));
cmfb.setShared(true);
return cmfb;
}
}
@Configuration
@DependsOn("ehcacheConfiguration")
public class ShiroConfiguration {
@Autowired
private org.springframework.cache.CacheManager cacheManager;
}
@SpringBootApplication
@EnableTransactionManagement
public class JarApplication {
public static void main(String[] args) {
SpringApplication.run(JarApplication.class, args);
}
}
Является классом 'AConfiguration', используя любые компоненты из' BConfiguration'? –
@KenBekov, No, AConfiguration не использует никаких компонентов из BConfiguration –
Autowire 'A' в метод getB вместо переменной-члена Spring лучше распознает зависимости между классами. поэтому вместо этого напишите 'getB (A a)'. –