我问了一个普通的Spring问题:自动转换Spring Beans并让多个人回应,ApplicationContext.getBean()应该尽可能避免调用Spring .这是为什么?
我还应该如何获得我配置Spring创建的bean的权限?
我在一个非Web应用程序中使用Spring,并计划按照LiorH的描述访问共享ApplicationContext对象.
修订
我接受下面的答案,但这是Martin Fowler的另一个选择,他讨论了依赖注入与使用服务定位器(与调用包装本质上相同ApplicationContext.getBean())的优点.
部分,福勒状态," 随着服务定位器应用程序类由一个消息给该定位器询问它[服务]明确地随着喷射没有明确请求时,服务出现在应用程序的类-控制的,因此反转.控制反转是框架的共同特征,但它的东西,是有代价的,它往往是很难理解,当你试图调试导致的问题.所以,整体来说,我宁可不去,[控制反转除非我需要它.这并不是说它是一件坏事,只是因为我认为它需要通过更直接的选择来证明自己的合理性. "
在我的Web spring应用程序中,我使用关键字创建一个实例,new 如下所示.
在我的一个动作类中,存在以下方法.
public void process() {
MyBean b=new MyBean(); //initiated the instance with new
b.process();
}
Run Code Online (Sandbox Code Playgroud)
其他MyBean类
@Service
public class MyBean {
@Autowired
MyService service;
public void process() {
service.execute(); // this service instance has not initialized by Spring DI :( .service object is null.
}
Run Code Online (Sandbox Code Playgroud)
Spring依赖注入不设置MyService实例.是因为我自己创建了MyBean的实例而new不是Spring吗?