package com.jayway.springsessionexample; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.Optional; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.context.ContextLoader; import org.springframework.web.context.support.WebApplicationContextUtils; import org.springframework.web.servlet.support.RequestContextUtils; /** * webTest 在子容器 * webTest2 在父容器 * @author root * */ public class HelloServlet extends HttpServlet { private static final String NAME = "name"; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) { /* * 1.ApplicationContextAware 之能获取父容器中的 * WebTest webTest = (WebTest) SpringContextHelper.getBean("webTest2"); System.out.println("webTest2 :"+webTest); WebTest webTest2 = (WebTest) SpringContextHelper.getBean("webTest"); System.out.println("webTest :"+webTest2);*/ //2.只能获取父容器中的, /*WebTest webTest = (WebTest) ContextLoader.getCurrentWebApplicationContext().getBean("webTest2"); System.out.println("webTest :"+webTest); WebTest webTest2 = (WebTest) ContextLoader.getCurrentWebApplicationContext().getBean("webTest"); System.out.println("webTest2 :"+webTest2);*/ //3.只能获取父容器中的, /*WebTest webTest = (WebTest) WebApplicationContextUtils.getWebApplicationContext(req.getServletContext()).getBean("webTest2"); System.out.println("webTest :"+webTest); WebTest webTest2 = (WebTest) WebApplicationContextUtils.getWebApplicationContext(req.getServletContext()).getBean("webTest"); System.out.println("webTest2 :"+webTest2);*/ /* 4. * WebTest webTest = (WebTest) RequestContextUtils.getWebApplicationContext(req).getBean("webTest2"); System.out.println("webTest :"+webTest); WebTest webTest2 = (WebTest) RequestContextUtils.getWebApplicationContext(req).getBean("webTest"); System.out.println("webTest2 :"+webTest2);*/ /*// 5.WebApplicationObjectSupport 之能获取父容器中的 WebTest webTest = (WebTest) ApplicationContextUtils.getBean("webTest2"); System.out.println("webTest2 :"+webTest); WebTest webTest2 = (WebTest) ApplicationContextUtils.getBean("webTest"); System.out.println("webTest :"+webTest2);*/ String name = Optional.ofNullable(req.getSession(false)) .map(session -> (String) session.getAttribute(NAME)) .orElse("World"); String greeting = String.format("Hello %s!", name); System.out.println("get====greeting "+greeting); try (ServletOutputStream out = resp.getOutputStream()) { out.write(greeting.getBytes(StandardCharsets.UTF_8)); out.flush(); } catch (IOException e) { e.printStackTrace(); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) { String name = req.getParameter(NAME); System.out.println("post===="+name); req.getSession().setAttribute(NAME, name); } }
相关推荐
这里我们将详细探讨如何在Java中通过Spring获取配置的bean。 1. **BeanFactory与ApplicationContext** - **BeanFactory** 是Spring中最基础的IoC容器,负责管理和实例化Bean。它允许开发者定义Bean的生命周期和...
- 博文链接:https://1151461406.iteye.com/blog/2389888,这个链接可能包含有关Spring4入门和获取Bean的具体教程。 - 在线课程:如Coursera、Udemy等平台上的Spring课程。 - 开源项目:参与开源项目,了解Spring在...
在Spring框架中,Bean的创建和初始化是IoC(Inversion of Control)容器的核心功能,这一过程涉及到多个...Spring的IoC容器使得应用更加灵活和易于测试,因为Bean的依赖关系可以通过配置来调整,而不是硬编码在代码中。
在实际开发中,Spring的Bean管理机制极大地提高了代码的可测试性和模块化。通过合理配置和设计Bean,可以降低组件间的耦合,使代码更易于维护和扩展。在Spring1-1这个文件中,可能包含了关于这些概念的示例代码和...
3. **加载配置并获取Bean**: 在Java代码中,使用`ClassPathXmlApplicationContext`加载XML配置文件,并通过Bean的ID获取并使用Bean实例。 ```java ApplicationContext context = new ...
在 Java 应用中,我们可以创建一个主类来启动应用程序,并从 Spring 容器中获取 Bean 实例。例如: ```java public class MainApp { public static void main(String[] args) { ApplicationContext context = new...
在非Spring管理的类中,如果该类由Spring初始化,我们可以创建一个持有ApplicationContext的成员变量,并使用`@Autowired`注解进行注入,再通过ApplicationContext获取Bean: ```java @Autowired private ...
今天,我们将通过一个实例形式来分析Spring获取Bean本身id的相关配置与实现技巧。 首先,让我们来看一下配置文件beans.xml: ```xml xmlns="http://www.springframework.org/schema/beans" xsi:...
- `ApplicationContext`:Spring的主要容器,提供了加载配置、获取Bean、处理事件等功能。 - `BeanFactory`:基础容器,功能相对简单,但通常使用`ApplicationContext`。 9. **SpEL(Spring Expression Language...
`BeanFactory`提供了对Bean的声明式管理,包括获取Bean、配置Bean等操作。在实际应用中,我们通常使用的是`DefaultListableBeanFactory`,这是Spring实现的一个具体Bean工厂,支持大量的Bean定义。 在源码分析过程...
在Bean的生命周期中,Spring提供了多种方式来获取Bean的实例,例如通过getBean方法、通过BeanFactory获取Bean实例等。 在获取所有拥有特定注解的Bean实例代码时,需要注意的是,ApplicationContextAware接口不能...
首先,Spring容器通过读取XML配置文件来获取Bean的定义。这些配置文件通常以`beans.xml`的形式存在,其中包含了Bean的名称、类名、依赖关系和其他属性。例如,一个简单的Bean定义可能如下所示: ```xml <bean id=...
如果在Spring初始化之前尝试获取Bean,可能会抛出异常。 总之,在Servlet中直接获取Spring的Bean可以帮助简化代码,减少重复的工作,并利用Spring的依赖注入能力。然而,这种方式应该谨慎使用,因为它可能破坏了...
本文主要探讨了Java获取Bean的多种方式,尤其在Spring Boot和IOC(控制反转)环境下。这些方式可以帮助开发者便捷地从Bean容器中检索和使用所需的Bean。 1. **初始化时保存ApplicationContext对象** 当应用启动时...
4. **Spring的应用上下文(ApplicationContext)**:ApplicationContext是Spring的主要接口之一,它提供了获取Bean、处理消息和事件等功能,是Spring应用中的主要入口点。 5. **构造注入(constructor injection)*...
这是Spring提供的接口,用于获取bean和管理bean的生命周期。你可以通过实现ApplicationContextAware接口,或者直接在代码中创建ApplicationContext实例来访问bean。 5. **非Spring管理类调用bean**: 在非Spring...
6. **Spring EL(Expression Language)**:在某些情况下,我们可能需要动态地获取bean,这时可以使用Spring EL。例如,在`@Value`注解中,我们可以写表达式来获取bean的属性或方法。 通过以上方式,普通类能够灵活...
7. 示例代码演示了如何使用@Component注解来定义一个Spring管理的Bean,并且在测试类中通过Spring的ApplicationContext来获取该Bean,验证其是否被正确注册。 8. JSR-250和JSR-330的注解虽然被Spring支持,但它们并...
Spring Aware接口自定义获取bean的两种方式 Aware接口是Spring框架中的一种机制,通过实现Aware接口,可以获取Spring容器中的bean对象。在Spring编程中,经常需要根据bean的名称来获取相应的bean对象,这时候,...
在示例中,`User`类被配置为一个Bean,通过`ClassPathXmlApplicationContext`加载配置并获取Bean实例。 2. 静态工厂创建: 当需要通过类的静态方法创建Bean实例时,可以使用这种方式。首先,我们需要一个带有静态...