Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Configuration
- public class MyApiFactory {
- // Без этого ProjectTreeService автоматом не регистрируется
- // Почему я ОБЯЗАН это делать через код?
- // Можно ли делегировать эту задачу спрингу?
- // В какой книге это описано?
- @Bean
- public ProjectTreeService getProjectTreeService() {
- /* Здесь можно вызывать метод, помеченный @Bean. В таком случае спринг сам догадается, что тебе либо создать бин-зависимость, либо подставить уже созданную зависимость (чтобы зависимость была в 1 экземпляре, так как поумолчанию все бины в спринге - singleton). Более того, в рамках одного класса таких вызовов можно делать несколько, Spring гаранитрует, что при нескольких вызовов будет переиспользоваться один и тот же бин */
- return new ProjectTreeService(getProjectTreeApi());
- }
- @Bean
- public ProjectTreeApi getProjectTreeApi() {
- // здесь нужно описать логику инициализации каждой копии MyApi
- // можно использовать БД, PluginSettingsFactory и другие инструменты
- ProjectTreeApi projectTreeApi = getClientGenericApi(ProjectTreeApi.class);
- return projectTreeApi;
- }
- }
- @Service
- public class ProjectTreeService {
- private final ProjectTreeApi projectTreeApi;
- public ProjectTreeService(ProjectTreeApi projectTreeApi) {
- this.projectTreeApi = api;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement