2016-11-24 2 views
2

Я работаю над проектом, который будет иметь несколько процессов для нашего приложения. Например, inputHandler и outputHandler, оба могут совместно использовать некоторые общие бобы, но в большинстве случаев они не будут делиться ими.Как Spring разбивает бобы для одного и того же проекта на несколько процессов Java?

Кроме того, у меня могут быть 2 inputHandler процессы и 3 outputHandler процессы, выполняющиеся на одном компьютере. Тем не менее, я хотел бы строить и упаковывать их отдельно, это не обязательно, но я думаю, что это тоже будет хорошей практикой, верно?

Обычно мы загружаем один и тот же контекст для всего, но теперь мы хотели бы быть умнее, больше памяти и загружать, эффективно.

Как можно разделить эти компоненты, чтобы эффективно работать в нескольких процессах java?

Я думал о наличии одного пакета common и помещал туда @Bean s, которые могут быть разделены между всеми процессами, и для каждого процесса у меня будет другой пакет, и оттуда я начну разрабатывать его отдельно. Однако я не уверен в этой стратегии; прежде чем говорить с вами, ребята/девочки.

Заранее благодарен!

ответ

2

Вы можете иметь свой контекст Spring в общем модуле, но разбивайте фасоль на «профили» весны.

Документация: http://docs.spring.io/autorepo/docs/spring-boot/current/reference/html/boot-features-profiles.html

Spring Профили обеспечивают способ для разделения частей конфигурации вашего приложения и сделать его доступным только в определенных условиях.

Таким образом, ваш процесс inputHandler может использовать фасоль в «inputHandler» профиль и т.д.

@Configuration 
@Profile("inputHandler") 
public class InputHandlerConfiguration { 

    // ... 

} 

@Configuration 
// no profile - applicable to all profiles 
public class CommonConfiguration { 

    // ... 

} 

Вы контролируете, какие профили активны, установив spring.profiles.active свойства. Вы можете активировать несколько профилей, разделенных запятой.

Смежные вопросы