我目前正在使用Spring Boot,創建一個CommandLineRunner。一切工作正常,直到我試圖@Autowired我的類:他們總是空,並從Spring獲得相同的錯誤:「錯誤創建名爲'initBatch'的bean:注入自動裝載依賴項失敗: 找不到類型[Utils]的合格bean對於依賴:預計將有至少1個Bean上有資格作爲自動裝配候選人,這種依賴性相關注釋我仍然想不通爲什麼這個錯誤發生 這是我的代碼:。Spring Boot服務爲空
@SpringBootApplication
public class InitBatch implements CommandLineRunner {
@Autowired
private Utils Utils;
@Override
public void run(String... args) throws Exception {
System.out.println("Hello World");
}
public static void main(String[] args) throws Exception {
SpringApplication.run(InitBatch.class, args);
}
@Bean
public ReloadableResourceBundleMessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("instances");
return messageSource;
}
這是utils的類這是造成問題:
@Configurable
@Service
public class Utils {
private static final Logger LOG = LoggerFactory.getLogger(Utils.class);
//NUMEROUS METHODS...
}
另外,我有一個她的Init將de應用加載爲WS。在一臺服務器上運行所有的東西,相同的類很好。這是工作的其他初始化:
@Configuration
@ComponentScan({ "ws.controller","ws.service",
"ws.dao", "ws.util", "ws.filtro",
"ws.repository", "ws.model.log", "ws.logger.impl"})
@EnableAutoConfiguration
public class Init extends SpringBootServletInitializer {
private static final int SECS = 10;
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Init.class);
}
/**
* Main method.
*
* @param args String[].
* @throws Exception Exception.
*/
public static void main(String[] args) throws Exception {
SpringApplication.run(Init.class, args);
}
@Bean
public ReloadableResourceBundleMessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("instances");
messageSource.setCacheSeconds(SECS);
return messageSource;
}
}
我只是不爲什麼使用相同的文件,具有相同配置的理解,與Init.java工作(作爲一個Tomcat Web應用程序),但都是一樣的CommandLineRunner的文件爲空。
有什麼建議嗎?
謝謝!
你是對的,我搞砸了我以前的測試與這種配置。如果我把@ComponentScan像魅力一樣工作。謝謝! –
乾杯..... @NicolasGallegos –