如何在没有应用程序上下文的情况下自动装配Spring Bean

时间:2017-02-22 00:21:36

标签: java spring spring-ioc

我希望能够通过自动连接使用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教程。问题是,我没有看到有人试图说明如何做这么简单的事情,当他们这样做时,他们最终会诉诸于使用应用程序上下文。话虽如此,我知道如果我使用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 个答案:

没有答案