我的需求是获取spring开发的web项目在服务器上的绝对路径。
进而引申到我需要知道servletContext,因为servletContext有一个servletContext.getRealPath("/");方法,这个方法就能获取项目的绝对路径。
常规方式下我们如何获取servletContext呢?我们需要让我们的类继承HttpServlet类,然后获取servletConfig,通过这 个获取servletContext(servletConfig.getServletContext())。(至于如何获取 servletconfig对象,大家去google,百度找找吧)
但是我需要在spring的bean中直接获取,这下可和我们常规的操作有些不同,因为spring的bean都是pojo的。根本见不着servletconfig和servletcontext的影子。
这里我需要指出spring给我们提供了两个接口:org.springframework.web.context.ServletContextAware和
org.springframework.web.context.ServletConfigAware。我们可以让我们的bean实现上边的任何一个接口就能获取到servletContext了 .
代码如下:
public class DicBean implements ServletContextAware{
private ServletContext servletContext;
public void setServletContext(ServletContext sc) {
this.servletContext=sc;
System.out.println("项目的绝对路径为:"+servletContext.getRealPath("/"));
}
}
这样,我们的bean就能够直接获取到servletContext了
如果你想要servletConfig,那方法一样,只是实现的接口不同了。
原理推想:应该是在创建spring的sessionFactory的时候,将应用服务器的相关属性一并加载,查看创建的bean是否实现相关接口,如果实现了,就将相关值赋予bean。
注意点:
1、这东西是无法用junit进行单元测试的,因为他依赖于应用服务器
分享到:
相关推荐
Spring 中获取 Bean 的多种方式 在 Spring 框架中,获取 Bean 是一个非常重要的步骤,因为它是使用 Spring 框架的基础。Spring 提供了多种方式来获取 Bean,这些方式可以根据不同的应用场景选择使用。 通过 XML ...
之后,Servlet可以通过以下方式直接从ServletContext获取这些Bean: ```java MyService myService = (MyService) getServletContext().getAttribute("bean1"); ``` 这种方法允许我们在不直接依赖于Spring工具类的...
在测试中,我们可以使用`ApplicationContext`来获取Bean,每次获取到的都是同一个对象。 2. **Prototype作用域**:与Singleton相反,Prototype作用域的Bean每次请求都会创建一个新的实例。这意味着,当你调用`...
本文将深入探讨几种常见的获取Spring容器的方法,包括使用`ApplicationContext`、通过`ServletContext`、利用`ApplicationObjectSupport`、`WebApplicationObjectSupport`以及实现`ApplicationContextAware`接口等。...
例如,如果你需要获取一个名为"userService"的Bean实例,可以这样做: ```java public static void getByUtil() { ApplicationContextUtil.getApplicationContext().getBean("userService"); } ``` 这种方式的...
本文主要探讨了Java获取Bean的多种方式,尤其在Spring Boot和IOC(控制反转)环境下。这些方式可以帮助开发者便捷地从Bean容器中检索和使用所需的Bean。 1. **初始化时保存ApplicationContext对象** 当应用启动时...
在 Spring 框架中,获取 WebApplicationContext 和 ApplicationContext 对象是非常重要的,因为它们提供了访问 Spring 容器中的 Bean 对象的入口。下面将详细介绍五种获取 WebApplicationContext 和 ...
"Spring在代码中获取bean的几种方式详解" Spring框架是Java应用程序中最流行的框架之一,它提供了许多功能强大且灵活的功能之一就是Bean管理机制。Bean是Spring框架的核心组件,用于管理应用程序中的业务逻辑。在...
本文将深入探讨如何在Java程序中获取Spring框架中配置的bean。 首先,我们来理解一下Spring框架的基本概念。Spring是一个轻量级的框架,其核心特性包括控制反转(Inversion of Control, IoC)和面向切面编程...
在Spring框架中,多配置文件和引用其他bean的方式是提高应用灵活性和模块化的重要手段。以下将详细讲解这些概念。 **Spring多配置文件的好处:** 1. **提高可读性**:将不同功能或模块的配置分开,使得每个配置文件...
下面将详细介绍在JSP页面中获取Spring容器中bean的两种方法。 ### 方法一:在Web应用中使用 在Web应用中,一般推荐使用Spring提供的WebApplicationContextUtils工具类来获取ApplicationContext。这种方法主要适用...
在Spring应用中,我们经常需要在Java类中获取由Spring管理的bean,以便进行依赖注入或者调用其方法。本文将详细介绍5种在Java类中获取Spring bean的方法。 1. **通过ApplicationContext初始化** 这是最基础的方式...
- `findBean(String beanName)` 方法用于从 Spring 中查找 bean,该方法通过当前 `FacesContext` 获取 `ServletContext`,进而获取 `ApplicationContext`,最终调用 `getBean` 方法获取指定名称的 bean。...
BeanFactory接口是Spring容器的基本规范,它定义了如何获取和管理Bean。HierarchicalBeanFactory扩展了BeanFactory,增加了获取父容器的能力,使得容器可以嵌套使用。ConfigurableBeanFactory进一步增强了配置功能,...
它不仅包括了ApplicationContext的功能,还提供了获取ServletContext的功能,以及与Servlet容器的集成。 51、什么是spring? 这里可能是一个错误,应该是“什么是Spring?”,Spring是一个用于开发Java应用的开源框架...
为了实现这一目标,Spring提供了一种方法来让我们在非Action类中获取到ApplicationContext上下文对象,进而通过这个上下文对象获取到所需的Bean实例,例如DAO层的对象。本文将详细介绍如何在Action以外的地方获取DAO...
- 使用`WebApplicationContextUtils`从ServletContext中获取ApplicationContext,然后通过ApplicationContext获取Bean。 - 或者,如果Servlet是Spring MVC的Controller,可以直接通过`@Autowired`注解来注入所需的...
首先,Spring框架提供了一种灵活的方式来管理应用程序的bean,包括创建、配置和依赖注入。而Struts2则是一个流行的MVC框架,它处理HTTP请求并负责视图和控制器的交互。两者结合可以使业务逻辑和表现层分离得更加清晰...