2016-05-13 2 views
0

Я ищу использование Spring Boot для нового приложения, но у меня возникли проблемы с поиском наилучшего подхода к созданию компонентов приложения.Spring Boot - bean definition

На высоком уровне это будет веб-приложение, которое может иметь один или несколько фасонов одного типа - каждый с разными значениями свойств. Если мне нужно добавить новый компонент того же типа, мне нужно будет только его настроить. Как правило, если я использовал Spring MVC, я бы просто определил каждый компонент в контексте приложения и загрузил значения свойств через файл контекста. Spring Boot предпочитает избавляться от xml-конфигурации, но я не уверен, как перевести определения bean-компонентов в решение Spring Boot. Как я все еще использую IoC, используя Spring Boot.

+0

Был ли мой ответ полезен для вас или есть что-то, чего вы еще не видели? –

+1

Я бы порекомендовал вам прочитать эту статью: http://bartslota.blogspot.com/2017/02/defining-bean-dependencies-with-java.html все там хорошо объяснено. –

ответ

1

На самом деле это не имеет никакого отношения к Spring Boot. Как вы упомянули, он поддерживает как Java, так и XML-компоненты.

Вы можете легко создать несколько компонентов из того же класса, используя конфигурацию Java.

XML конфигурации, как:

<bean id="first" class="com.foo.MyClass" /> 

<bean id="second" class="com.foo.MyClass" /> 

выливается:

@Configuration 
class MyConfiguration { 

    @Bean 
    MyClass first() { 
     return new MyClass(); 
    } 

    @Bean 
    MyClass second() { 
     return new MyClass(); 
    } 
} 
+0

Это возможно. Использование аннотации @Qualifier также рекомендуется избегать повторных исключений bean-компонентов при использовании инъекции зависимостей. –

0

с ответом Maciej Валковяк, это также рекомендовано написать это:

@Configuration 
class MyConfiguration { 

    @Bean 
    @Qualifier("first") 
    MyClass first() { 
     return new MyClass(); 
    } 

    @Bean 
    @Qualifier("second") 
    MyClass second() { 
     return new MyClass(); 
    } 
} 

затем позже, когда вы используете autwire, вы можете использовать:

@Autowired 
@Qualifier("second") 
private MyClass myClass; 
Смежные вопросы