不好意思,这篇文章不是教大家怎么解决如题的问题,我的确尝试了不少方法,大家如果解决了还请不吝赐教,后来我是用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时,有几种常见的方法: 1. **ThreadLocal**:Spring提供了一种名为`ThreadLocalTargetSource`的特殊`TargetSource`实现,可以将bean实例绑定到当前线程。这样,每个线程都有其...
总的来说,获取非Spring管理组件中的SpringBean主要有两种方式:一是通过实现`ApplicationContextAware`接口并存储ApplicationContext,二是使用注解和静态内部类来注入BeanFactory。这两种方法都是Spring框架提供的...
总结,Spring框架通过BeanFactory和ApplicationContext提供了灵活的方式来管理和获取Bean。开发者可以根据应用需求选择合适的方式,从XML配置到注解注入,再到基于Java的配置,Spring都提供了全面的支持。理解这些...
综上所述,Spring 的依赖注入和 Bean 管理不仅限于 Web 应用,也可以方便地应用于 Java Application 中,通过 XML 或注解配置来实现组件间的解耦,提高代码质量。这个示例项目 `test` 可能包含了实现上述功能的代码...
- 使用静态工厂方法实例化:这种方式通过调用一个静态方法来获取Bean实例,适用于简单工厂模式。 - 使用实例工厂方法实例化:类似于静态工厂方法,但工厂方法是非静态的,需要先创建工厂类的实例后再调用。 - ...
3. **Spring注入Bean到Job**:在Job执行时,我们可以直接注入其他由Spring管理的Bean,无需在Job中创建这些对象,从而减少了代码的复杂性,增强了可重用性。 4. **JobFactory的自定义**:Quartz默认使用...
Spring容器通过XML、Java配置或者基于注解的方式管理Bean的生命周期,包括创建、初始化、使用和销毁。 2. **XML配置Bean** 在传统的Spring应用中,我们通常使用XML文件来定义Bean。例如: ```xml <bean id=...
整个流程中,Spring不仅创建了Bean,还管理了Bean的生命周期,包括依赖注入、初始化和销毁等。这种自动化管理使得开发者可以专注于业务逻辑,而不用关心对象的创建和管理细节。Spring的IoC容器使得应用更加灵活和...
要从一个非Spring管理的类中获取Bean,我们需要先创建或获取`ApplicationContext`实例。有多种方式可以做到这一点,例如: 1. 通过`ClassPathXmlApplicationContext`或`FileSystemXmlApplicationContext`加载XML...
通过以上两种方法,我们可以在Spring应用中灵活地获取所需的Bean实例。第一种方法适用于Web应用环境,而第二种方法则更加通用,可以在任何环境中使用。这两种方式都避免了硬编码Bean的获取逻辑,使得代码更加灵活和...
Spring框架通过提供依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等特性,简化了应用程序的复杂性。在本篇中,我们将深入探讨"Spring中的Bean"这一主题,包括Bean的定义...
在Spring框架中,Bean是被Spring管理的对象,它们可以通过XML配置、注解或者Java配置类来定义。Spring使用IoC容器来管理和实例化这些Bean。获取Bean主要有以下几种方式: 1. **通过Bean的ID**:使用`...
在Spring框架中,Bean是核心概念,它是Spring管理的对象,通常代表了应用程序中的业务对象或服务。本示例将深入探讨如何在Spring中创建和管理Bean。首先,我们需要理解Spring的IoC(Inversion of Control,控制反转...
14. **非XML定义文件的配置方式**:除了传统的XML配置,Spring还支持.properties文件和Java配置类来定义Bean,使得配置更加灵活且类型安全。 通过学习和实践这些内容,开发者可以更好地理解和掌握Spring如何管理...
本篇将详细介绍Spring Boot中获取Bean的几种常见方式。 首先,让我们理解什么是Spring Bean。在Spring框架中,Bean是一个由Spring容器管理的对象,通常代表应用中的业务组件或服务。Spring会负责Bean的创建、初始化...
总结,Spring的注解方式为Bean的属性注入提供了简洁、灵活的方式,大大减少了XML配置的工作量。通过深入理解这些注解以及其背后的工作原理,我们可以更好地利用Spring框架进行开发。同时,结合源码阅读和相关工具的...
"深度解析spring容器管理bean"这一主题,旨在深入理解Spring如何通过反射机制、依赖注入(DI)以及XML或Java配置来实现对Bean的生命周期管理。 首先,Spring容器主要有两种类型:DefaultListableBeanFactory和...
总之,在Servlet中直接获取Spring的Bean可以帮助简化代码,减少重复的工作,并利用Spring的依赖注入能力。然而,这种方式应该谨慎使用,因为它可能破坏了依赖注入的初衷,使得代码更难测试和维护。在可能的情况下,...
以静态变量保存Spring ApplicationContext, 可在任何代码任何地方任何时候中取出ApplicaitonContext. 在配置文件中注入<bean class="xxx.xxx.SpringContextHolder" lazy-init="false" /> 即可使用
本文将总结几种在代码中获取Spring Bean的方法,以供学习和工作中参考。 **1. 通过`ContextLoader.getCurrentWebApplicationContext()`获取** 这种方式适用于Web应用程序,不依赖于Servlet。在服务器启动后,...