`
lancezhcj
  • 浏览: 48884 次
  • 性别: Icon_minigender_2
  • 来自: 衡阳
社区版块
存档分类
最新评论

通过非注入方式获取spring管理的bean

 
阅读更多
   不好意思,这篇文章不是教大家怎么解决如题的问题,我的确尝试了不少方法,大家如果解决了还请不吝赐教,后来我是用spring的HandlerInterceptorAdapter。
   为了这个问题郁闷了好久,用eclipse开发的一个系统,架构是spring MVC + ibatis,
项目结构:
src
webContent
  --WEB-INF
       --classes
       --config
            --baoqu-servlet.xml
            --application-context.xml
       --web.xml


我写了一个filter,在filter中要调用一个spring管理的bean,找了不少方法也没有解决,网上众说纷纭:
//初始化service

1、ClassLoader cl = Thread.currentThread().getContextClassLoader();
InputStream is = cl.getResourceAsStream("../config/baoqu-servlet.xml");
System.out.println(is);

2、 final String SEP = File.separator;
    final String REGX_TEMP="\\"+SEP;

   String result = TokenFilter.class.getResource("TokenFilter.class").toString();
if(result.startsWith("jar")){
// 当class文件在jar文件中时,返回"jar:file:/F:/ ..."样的路径
result = result.substring(10,result.indexOf("WEB-INF"));
}else if(result.startsWith("file")){
// 当class文件在class文件中时,返回"file:/F:/ ..."样的路径
result = result.substring(6,result.indexOf("WEB-INF"));
}else if(result.startsWith("zip")){
result = result.substring(4,result.indexOf("WEB-INF"));
}
result=result.replaceAll("/", REGX_TEMP);
System.out.print(result);     
ServletContext sc = filterConfig.getServletContext();
System.out.print(sc);
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(sc);
        //String path=servletContext.getRealPath("/");  得到的就是 编译后web文件夹的路径
        //String path = this.filterConfig.getServletContext().getRealPath("/");
        //path=path+"/WEB-INF/config";
// ApplicationContext ctx = new ClassPathXmlApplicationContext(path);
System.out.print(ctx);
//ApplicationContext ctx=
         new    FileSystemXmlApplicationContext("/config/baoqu-servlet.xml");

都说文件不存在,无法打开文件。
分享到:
评论

相关推荐

    线程中获取spring 注解bean

    当需要在线程中获取Spring注解的bean时,有几种常见的方法: 1. **ThreadLocal**:Spring提供了一种名为`ThreadLocalTargetSource`的特殊`TargetSource`实现,可以将bean实例绑定到当前线程。这样,每个线程都有其...

    Web项目中获取SpringBean与在非Spring组件中获取SpringBean.pdf

    总的来说,获取非Spring管理组件中的SpringBean主要有两种方式:一是通过实现`ApplicationContextAware`接口并存储ApplicationContext,二是使用注解和静态内部类来注入BeanFactory。这两种方法都是Spring框架提供的...

    Java中Spring获取bean方法小结

    总结,Spring框架通过BeanFactory和ApplicationContext提供了灵活的方式来管理和获取Bean。开发者可以根据应用需求选择合适的方式,从XML配置到注解注入,再到基于Java的配置,Spring都提供了全面的支持。理解这些...

    spring依赖注入bean

    综上所述,Spring 的依赖注入和 Bean 管理不仅限于 Web 应用,也可以方便地应用于 Java Application 中,通过 XML 或注解配置来实现组件间的解耦,提高代码质量。这个示例项目 `test` 可能包含了实现上述功能的代码...

    Spring bean 管理

    - 使用静态工厂方法实例化:这种方式通过调用一个静态方法来获取Bean实例,适用于简单工厂模式。 - 使用实例工厂方法实例化:类似于静态工厂方法,但工厂方法是非静态的,需要先创建工厂类的实例后再调用。 - ...

    Quartz注入Spring的Bean

    3. **Spring注入Bean到Job**:在Job执行时,我们可以直接注入其他由Spring管理的Bean,无需在Job中创建这些对象,从而减少了代码的复杂性,增强了可重用性。 4. **JobFactory的自定义**:Quartz默认使用...

    spring管理bean应用实例代码

    Spring容器通过XML、Java配置或者基于注解的方式管理Bean的生命周期,包括创建、初始化、使用和销毁。 2. **XML配置Bean** 在传统的Spring应用中,我们通常使用XML文件来定义Bean。例如: ```xml <bean id=...

    Spring Bean创建初始化流程.docx

    整个流程中,Spring不仅创建了Bean,还管理了Bean的生命周期,包括依赖注入、初始化和销毁等。这种自动化管理使得开发者可以专注于业务逻辑,而不用关心对象的创建和管理细节。Spring的IoC容器使得应用更加灵活和...

    在非spring注解类中使用spring容器中的bean_普通类中使用yml配置文件中的配置信息

    要从一个非Spring管理的类中获取Bean,我们需要先创建或获取`ApplicationContext`实例。有多种方式可以做到这一点,例如: 1. 通过`ClassPathXmlApplicationContext`或`FileSystemXmlApplicationContext`加载XML...

    几种spring获取bean的方法.txt

    通过以上两种方法,我们可以在Spring应用中灵活地获取所需的Bean实例。第一种方法适用于Web应用环境,而第二种方法则更加通用,可以在任何环境中使用。这两种方式都避免了硬编码Bean的获取逻辑,使得代码更加灵活和...

    spring中的bean

    Spring框架通过提供依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等特性,简化了应用程序的复杂性。在本篇中,我们将深入探讨"Spring中的Bean"这一主题,包括Bean的定义...

    第一章 Spring4 简介及获取Bean

    在Spring框架中,Bean是被Spring管理的对象,它们可以通过XML配置、注解或者Java配置类来定义。Spring使用IoC容器来管理和实例化这些Bean。获取Bean主要有以下几种方式: 1. **通过Bean的ID**:使用`...

    spring创建bean简单示例

    在Spring框架中,Bean是核心概念,它是Spring管理的对象,通常代表了应用程序中的业务对象或服务。本示例将深入探讨如何在Spring中创建和管理Bean。首先,我们需要理解Spring的IoC(Inversion of Control,控制反转...

    Spring中关于Bean的管理的课件

    14. **非XML定义文件的配置方式**:除了传统的XML配置,Spring还支持.properties文件和Java配置类来定义Bean,使得配置更加灵活且类型安全。 通过学习和实践这些内容,开发者可以更好地理解和掌握Spring如何管理...

    SpringBoot 获取spring bean方式.rar

    本篇将详细介绍Spring Boot中获取Bean的几种常见方式。 首先,让我们理解什么是Spring Bean。在Spring框架中,Bean是一个由Spring容器管理的对象,通常代表应用中的业务组件或服务。Spring会负责Bean的创建、初始化...

    day38 17-Spring的Bean的属性注入:注解方式

    总结,Spring的注解方式为Bean的属性注入提供了简洁、灵活的方式,大大减少了XML配置的工作量。通过深入理解这些注解以及其背后的工作原理,我们可以更好地利用Spring框架进行开发。同时,结合源码阅读和相关工具的...

    深度解析spring容器管理bean

    "深度解析spring容器管理bean"这一主题,旨在深入理解Spring如何通过反射机制、依赖注入(DI)以及XML或Java配置来实现对Bean的生命周期管理。 首先,Spring容器主要有两种类型:DefaultListableBeanFactory和...

    在Servlet直接获取Spring框架中的Bean.docx

    总之,在Servlet中直接获取Spring的Bean可以帮助简化代码,减少重复的工作,并利用Spring的依赖注入能力。然而,这种方式应该谨慎使用,因为它可能破坏了依赖注入的初衷,使得代码更难测试和维护。在可能的情况下,...

    获取spring管理的bean

    以静态变量保存Spring ApplicationContext, 可在任何代码任何地方任何时候中取出ApplicaitonContext. 在配置文件中注入<bean class="xxx.xxx.SpringContextHolder" lazy-init="false" /> 即可使用

    Spring在代码中获取bean的方法小结

    本文将总结几种在代码中获取Spring Bean的方法,以供学习和工作中参考。 **1. 通过`ContextLoader.getCurrentWebApplicationContext()`获取** 这种方式适用于Web应用程序,不依赖于Servlet。在服务器启动后,...

Global site tag (gtag.js) - Google Analytics