l a*_*a s 21 spring tomcat spring-mvc
我有一个类(ABC类),通过调用构造函数实例化.ABC类依次使用自动连线注入辅助类(Class XYZ).
我们是一个基于Spring MVC的应用程序,在服务器启动时我没有看到任何异常.
但我仍然认为Class XYZ为null.是因为类ABC不是由Spring容器实例化的吗?
在这种情况下,我如何使用自动布线?
谢谢.
Ash*_*sia 27
您可以使用这种方式在非spring bean类中使用spring bean
public class ApplicationContextUtils implements ApplicationContextAware {
private static ApplicationContext ctx;
@Override
public void setApplicationContext(ApplicationContext appContext)
throws BeansException {
ctx = appContext;
}
public static ApplicationContext getApplicationContext() {
return ctx;
}
}
Run Code Online (Sandbox Code Playgroud)
现在你可以通过getApplicationContext()这个方法获取applicationcontext对象.
从applicationcontext你可以得到这样的spring bean对象:
ApplicationContext appCtx = ApplicationContextUtils
.getApplicationContext();
String strFromContext = (String) appCtx.getBean(beanName);
Run Code Online (Sandbox Code Playgroud)
自动装配不起作用,因为ABC不管理类.您可以通过在类定义上方使用@Component注释之一(@ Component,@ Service,@ Controller等),然后在应用程序上下文XML中使用context:component-scan,或者去旧学校和只需在应用程序上下文中直接定义bean.
如果由于某种原因你不能使Spring管理类ABC,你可以使用类似的东西在ABC中加载应用程序上下文:
ApplicationContext context = new ClassPathXmlApplicationContext("path/to/applicationContext.xml");
然后使用:
XYZ someXyz =(XYZ)context.getBean("MyXYZ");
手动设置bean值.
正确:你不能只调用new一个类并把它全部连接起来;你必须这样做。Spring 必须管理 bean 才能发挥其所有魔力。
如果您可以发布有关您的用例的更多详细信息,我们也许可以建议有用的选项。
| 归档时间: |
|
| 查看次数: |
27267 次 |
| 最近记录: |