0
我使用配置類創建了Spring Boot應用程序。通常使用Spring庫的RestAPI。在裏面我使用我自己的Logger類來記錄每一個動作。Spring Boot無法啓動 - Bean之間存在循環依賴關係
此外,我在我的應用程序類中包含application.properties,其中main函數是。 xml中沒有bean - 只有該配置類中的所有內容。
下面是配置:
@SpringBootConfiguration
public class ApplicationConfiguration {
@Value("${hibernate.dialect}")
private String dialect;
@Value("${hibernate.show_sql}")
private String showSql;
@Value("${hibernate.mappingResources}")
private String[] mappingResources;
@Value("${jdbc.driverClassName}")
private String driverClassName;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Autowired
private DataSource dataSource;
@Autowired
private LocalSessionFactoryBean localSessionFactoryBean;
@Bean
public LocalSessionFactoryBean localSessionFactoryBean() {
LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
Properties hibernateProperties = new Properties();
hibernateProperties.setProperty("hibernate.dialect", dialect);
hibernateProperties.setProperty("hibernate.show_sql", showSql);
sessionFactoryBean.setHibernateProperties(hibernateProperties);
sessionFactoryBean.setMappingResources(mappingResources);
return sessionFactoryBean;
}
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
}
另外,我創建的Logger類:
@Service
public class LinksLogger {
private static final Logger logger = Logger.getLogger("MyLogs");
// methods here...
}
在這裏,我如何用我的記錄:
@RestController
@RequestMapping("/api/v1")
public class HelloController {
@Autowired
private LinksLogger logger;
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public Map<String, String> hello() {
Map<String, String> data = new HashMap<>();
data.put("data", "Hello#_#World");
logger.log("Hello#_#World");
return data;
}
}
看起來好,對不對? 但是,當我編譯我的代碼,我得到異常:
There is a circular dependency between 2 beans in the application context:
- helloController (field private com.defaultxyz.linksapi.util.LinksLogger com.defaultxyz.linksapi.controller.HelloController.logger)
- applicationConfiguration (field private org.springframework.orm.hibernate3.LocalSessionFactoryBean com.defaultxyz.linksapi.util.ApplicationConfiguration.localSessionFactoryBean)
- localSessionFactoryBean
爲什麼此異常出現?我在代碼中做了什麼錯誤?
謝謝!它的作品,我會記得那個練習! :) – DefaultXYZ