Как автоматически связывать Spring Beans без контекста приложения

Я хотел бы иметь возможность использовать bean-компонент через автоматическое подключение без непосредственного использования ApplicationContext. Ниже приведен пример того, что я хотел бы сделать.

Класс конфигурации

@Configuration
public class CoffeeConfig
{
     @Bean
     public CoffeeMachine provideCoffeeMachine()
     {
         return new CoffeeMachine(provideCoffeeBean());
     }

     @Bean
     public CoffeeBean provideCoffeeBean()
     {
          return new CoffeeBean(Type.BEST);
     }
}

Кофейня Класс

@Component
public class CoffeeShop
{    
    @Autowired
    private CoffeeMachine cMachine;

    public void pourCoffee()
    {
         System.out.print("Pouring cup of coffee: " + cMachine.pour(Amount.8OZ));
    }
}

Чтобы решить эту проблему, я перечитывал документацию и учебные пособия по Spring. Проблема в том, что я не видел никого, кто бы пытался проиллюстрировать, как сделать что-то столь же простое, как это, и когда они это делают, они в итоге прибегают к использованию контекста приложения. При этом я знаю, что если я запускаю модульные тесты в Spring, я могу сделать следующее:

Тестовый класс

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=CoffeeConfig.class, loader=AnnotationConfigContextLoader.class)
public class SpringIOCTests
{
    @Autowired 
    public CoffeeMachine cMachine;

    @Test
    public void influxDevTest()
    {
        assertEquals(Type.BEST, cMachine.getBeans());
    }
}

То, как это настраивается, заставляет меня полагать, что использование автоматического подключения таким способом должно быть достижимо в реальном приложении вместо использования этих зависимостей только для тестирования, таких как ContextConfiguration. Должен также отметить, что этот юнит-тест проходит успешно.

Предлагает ли Spring методологию, в которой можно автоматически и автоматически подключать зависимости, избегая прямого использования контекстов приложения?

0 ответов

Другие вопросы по тегам