首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

spring依赖注入不成功,spring 窗口治理

2012-08-29 
spring依赖注入不成功,spring 窗口管理有时我们使用spring的注入的时候不成功,如我们在一个地方实例化一个

spring依赖注入不成功,spring 窗口管理

有时我们使用spring的注入的时候不成功,如我们在一个地方实例化一个类,这个类里面就用到依赖注入的方式,我们也在spring配置文件里写好了让它去扫描这个包,将该类纳入spring容器管理,但当我们实例化它的时候,它里面的spring的bean并没有注入,这是为什么,因为我们虽然将这个类纳入spring容器管理,但是当我们实例这个类时,这个是我们自己实例化的对象,它不属于spring管理范围,也就是不是由spring实例化的,所以它里面用到的spring的注入是不成功的。我这个是在使用phprpc里发布一个服务器,遇到的问题,发布如下:

?

?

?

这个实例化就是自己的实例化,不是spring并不纳入spring管理范围,所以在RemoteServiceImpl里用到spring注解里是不能注入成功的,解决的办法,自己手动加载spring配置文件,

也就是再实例化一个spring容器,然后从容器里获取bean,如下:

?

1 可先建一个spring容器实例化的类,这样当你想在自己想使用spring容器的时候就用这同一个(这里以静态变量的形式存在),而不用每次都实例化一个新的spring容器,这样才不会过度消耗内容资源。

?

?

所以我们的请求跳到action类去处理时,在action类里的注解是可以注入的。

?

而当我在web.xml配置一个servlet,而在客户端(我使用jquery uploadify组件)请求就指定用该servlet来处理,而当这个servlet里面用到spring注解的时候,它会在客户请求时发生异常,出现如下异常:

?

严重: Allocate exception for servlet uploadServletjavax.naming.NameNotFoundException: Name org.lab24.file.servlet.UploadServlet is not bound in this Contextat org.apache.naming.NamingContext.lookup(NamingContext.java:770)at org.apache.naming.NamingContext.lookup(NamingContext.java:153)at org.apache.catalina.util.DefaultAnnotationProcessor.lookupFieldResource(DefaultAnnotationProcessor.java:278)at org.apache.catalina.util.DefaultAnnotationProcessor.processAnnotations(DefaultAnnotationProcessor.java:187)at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1120)at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:809)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861)at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584)at java.lang.Thread.run(Unknown Source)

?开始我以有是我的web.xml没配置好,老是说servlet不能在邦定,其它是这个servlet里面的的注解不能邦定,所在这里要想用spring注解,可以用上面的方式来自己加载spring容器,或都可以在web.xml里配置使用请求的servlet处理bean也交给spring管理,这个我就不会配置,知道的网友希望告诉一下我。

?

最后总结一下:

1 当你使用直接实倒化一个类(里面用到spring的注解)时,是不没有交给spring容器管理的,除了你自己在类里面加载spring容器。


2 处理用户的请求类,只有在web.xml里配置了交由spring管理的,才能使用spring的注解,不然只能手动实例化spring容器后才能用。

热点排行