问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

spring component能用applicationcontext获取吗

发布网友 发布时间:2022-11-13 13:38

我来回答

1个回答

热心网友 时间:2024-10-01 04:23

方法一:在初始化时保存ApplicationContext对象代码:ApplicationContextac=newFileSystemXmlApplicationContext("applicationContext.xml");ac.getBean("beanId");说明:这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的情况。方法二:通过Spring提供的工具类获取ApplicationContext对象代码:importorg.springframework.web.context.support.WebApplicationContextUtils;ApplicationContextac1=WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContextsc);ApplicationContextac2=WebApplicationContextUtils.getWebApplicationContext(ServletContextsc);ac1.getBean("beanId");ac2.getBean("beanId");说明:这种方式适合于采用Spring框架的B/S系统,通过ServletContext对象获取ApplicationContext对象,然后在通过它获取需要的类实例。上面两个工具方式的区别是,前者在获取失败时抛出异常,后者返回null。其中servletContextsc可以具体换成servlet.getServletContext()或者this.getServletContext()或者request.getSession().getServletContext();另外,由于spring是注入的对象放在ServletContext中的,所以可以直接在ServletContext取出WebApplicationContext对象:WebApplicationContextwebApplicationContext=(WebApplicationContext)servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);方法三:继承自抽象类ApplicationObjectSupport说明:抽象类ApplicationObjectSupport提供getApplicationContext()方法,可以方便的获取到ApplicationContext。Spring初始化时,会通过该抽象类的setApplicationContext(ApplicationContextcontext)方法将ApplicationContext对象注入。方法四:继承自抽象类WebApplicationObjectSupport说明:类似上面方法,调用getWebApplicationContext()获取WebApplicationContext方法五:实现接口ApplicationContextAware说明:实现该接口的setApplicationContext(ApplicationContextcontext)方法,并保存ApplicationContext对象。Spring初始化时,会通过该方法将ApplicationContext对象注入。在web应用中一般用ContextLoaderListener加载webapplication,如果需要在action之外或者control类之外获取webapplication思路之一是,单独写个类放在static变量中,类似于:publicclassAppContext{privatestaticAppContextinstance;privateAbstractApplicationContextappContext;publicsynchronizedstaticAppContextgetInstance(){if(instance==null){instance=newAppContext();}returninstance;}privateAppContext(){this.appContext=newClassPathXmlApplicationContext("/applicationContext.xml");}publicAbstractApplicationContextgetAppContext(){returnappContext;}}不过这样,还是加载了2次applicationcontext,servlet一次,路径加载一次;觉得不如直接用路径加载,舍掉servlet加载在网上也找了些其他说法:实现ApplicationContextAware,,,接口,或者servletcontextAware接口,还要写配置文件。有的竟然要把配置文件里的listener,换成自己的类,这样纯粹多此一举。不过有的应用不是替换,是在补一个listener,我在一版的jpetstore(具体那一版不知道)里发现了这个:[web.xml]里org.springframework.web.context.ContextLoaderListenercom.ibatis.jpetstore.util.SpringInit其中SpringInit实现接口ServletContextListener:packagecom.ibatis.jpetstore.util;importjavax.servlet.ServletContextEvent;importjavax.servlet.ServletContextListener;importorg.springframework.context.ApplicationContext;importorg.springframework.web.context.WebApplicationContext;importorg.springframework.web.context.support.WebApplicationContextUtils;publicclassSpringInitimplementsServletContextListener{privatestaticWebApplicationContextspringContext;publicSpringInit(){super();}publicvoidcontextInitialized(ServletContextEventevent){springContext=WebApplicationContextUtils.getWebApplicationContext(event.getServletContext());}publicvoidcontextDestroyed(ServletContextEventevent){}publicstaticApplicationContextgetApplicationContext(){returnspringContext;}}在其中的一个bean的构造里SpringInit获取applicationcontext,代码:publicOrderBean(){this((AccountService)SpringInit.getApplicationContext().getBean("accountService"),(OrderService)SpringInit.getApplicationContext().getBean("orderService"));}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我老公独自开车和别车相撞,老公的车当时翻了车,人无大碍车很惨。被撞... 老公是否出轨了? Word中设置图文框位置有妙招 员工两个月没上班怎么解除劳动合同 舌苔发黄并且有口臭怎么回事 舌苔发黄 口干舌燥 舌苔发黄 口干是什么原因 网络营销怎样做?教你4步做好免费推广 在八廓街旅行有哪些当地特产值得推荐? 拉萨的哪些特产美食是游客极力安利的? Spring获取上下文的四种方式方式 Green Day的Wake Me Up When September Ends,我在酷狗上怎么也下载不... 六边形怎么画出来? 冷冻的鸭子能放微博里转吗 油炸鸭子用微博炉加热需要多长时间 广西只有南宁有平安银行吗 津市有平安银行吗 超凡蜘蛛侠观后感450字 成语谜语:打腰鼓(打一成语)的相关文章推 ...放烟火() 钻空子() 地头蛇() 换小钱() 打腰鼓() 纸老 《超凡蜘蛛侠》被评为最好看的电影之一,你怎么看? 打腰鼓,打一四字成语 超凡蜘蛛侠1观后感 纺织厂条并联工序危险部位及操作 xbox360侠盗飞车5能抢地盘吗 用XBOX 360可以玩GTA5吗? 高中阶段测量天体密度公式 冰糖峪2022门票啥样的 康派特季铵盐手消毒液成份 共读《乌合之众》3—被神奇左右的人类 怎么获取webapplicationcontext 怎么获取application 贵阳租机车哪家好 黄石恒大游乐场在哪里 电解铁的生产工艺 余绪缨的开拓了现代管理会计研究的一个新领域 初中历史上到初几 请教一下初一至初三的历史课如何学习 君临天下(北京)投资有限公司怎么样? 安徽君临天下科技有限公司怎么样? wejiess足球鞋咋样? 谁给我推荐一款足球鞋,要给力,价格在100到200之间最好 量刑情节的分类有哪些? 想买双足球鞋,宽脚面的,价位在100-250之间,谁能推荐一下,谢谢!_百度... 量刑情节中的法定量刑情节主要有哪些 高中物理说课稿:《动量定理》 我们的歌第四季第六期几点播出 极限挑战第一季录完又隔了多久录第二季? 《中国梦之声我们的歌》定档 于10月27播出 我们的歌第四季什么时候更新