站酷app,赣州金图网络科技有限公司,wordpress+极致优化,做gif图的网站IDE#xff1a;IntelliJ IDEA 2022.2.3 x64 操作系统#xff1a;win10 x64 位 家庭版 JDK: 1.8 文章目录 前言一、如何手动获取spring容器[ApplicationContext]#xff1f;方式①#xff1a;在启动类中获取spring容器方式②#xff1a;自定义工具类实现ServletContextList… IDEIntelliJ IDEA 2022.2.3 x64 操作系统win10 x64 位 家庭版 JDK: 1.8 文章目录 前言一、如何手动获取spring容器[ApplicationContext]方式①在启动类中获取spring容器方式②自定义工具类实现ServletContextListener接口以获取spring容器[推荐web项目]方式③自定义工具类实现ApplicationContextAware接口以获取spring容器方式④自定义工具类继承ApplicationObjectSupport抽象类以获取spring容器方式⑤自定义工具类继承WebApplicationObjectSupport抽象类以获取spring容器参考资料 前言
众所周知在Spring框架中的全局上下文对象通常被称为ApplicationContext。这是Spring容器的一种表现形式负责管理和控制应用程序中的对象Bean。它本质上维护了Bean的定义以及对象间的协作关系。当项目运行时ApplicationContext会自动装载所有在Handler中的信息到内存。此外Spring上下文也是一种配置文件能向Spring框架提供上下文信息。因此我们可以说ApplicationContext是Spring框架的核心部分提供了各种便利服务来帮助应用程序开发。 提示以下是本篇文章正文内容下面案例可供参考
一、如何手动获取spring容器[ApplicationContext]
方式①在启动类中获取spring容器 在启动类中获取spring容器 代码示例如下
SpringBootApplication
public class UserApplication {//在启动类运行时获取spring容器对象public static ConfigurableApplicationContext context;public static void main(String[] args) {context SpringApplication.run(UserApplication.class,args);}
}在自定义Controller类中调用启动类中获得的spring容器 GetMapping(/sayhi1)public String sayhi1(){//从spring容器中获取Myservice这个bean然后调用该bean的sayHi1()方法MyService myService UserApplication.context.getBean(MyService.class);return myService.sayHi();}测试 方式②自定义工具类实现ServletContextListener接口以获取spring容器[推荐web项目] 自定义工具类实现ServletContextListener接口 示例代码如下 import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
import org.springframework.web.context.support.WebApplicationContextUtils;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListenerComponent
public class MyWebApplicationContext implements ServletContextListener{private ServletContext servletcontext;Overridepublic void contextInitialized(ServletContextEvent sce) {this.servletcontext sce.getServletContext();}public ApplicationContext getApplicationcontext() {return WebApplicationContextUtils.getWebApplicationContext(this.servletcontext);}
}在自定义Controller类中注入上面写好的工具类然后获取spring容器 Autowiredprivate MyWebApplicationContext myWebApplicationContext;GetMapping(/sayhi2)public String sayhi2(){//使用工具类获取spring容器然后从中得到myService 这个bean调用其中的sayHi()方法MyService myService myWebApplicationContext.getApplicationcontext().getBean(MyService.class);return myService.sayHi();}测试 方式③自定义工具类实现ApplicationContextAware接口以获取spring容器 自定义工具类实现ApplicationContextAware接口 示例代码如下
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;Component
public class MyApplicationAware implements ApplicationContextAware {private ApplicationContext applicationcontext;Overridepublic void setApplicationContext(ApplicationContext applicationcontext) throws BeansException {this.applicationcontext applicationcontext;}public ApplicationContext getApplicationcontext() {return this.applicationcontext;}
} 在自定义Controller类中注入上面写好的工具类然后获取spring容器 Autowiredprivate MyApplicationAware myApplicationAware;GetMapping(/sayhi3)public String sayhi3(){//使用工具类获取spring容器然后从中得到myService 这个bean调用其中的sayHi()方法MyService myService myApplicationAware.getApplicationcontext().getBean(MyService.class);return myService.sayHi();}测试 方式④自定义工具类继承ApplicationObjectSupport抽象类以获取spring容器 自定义工具类继承ApplicationObjectSupport抽象类 代码示例如下
import org.springframework.context.support.ApplicationObjectSupport;
import org.springframework.stereotype.Component;Component
public class MyApplicationObjectSupport extends ApplicationObjectSupport {
} 在自定义Controller类中注入上面写好的工具类然后获取spring容器 Autowiredprivate MyApplicationObjectSupport myApplicationObjectSupport;GetMapping(/sayhi4)public String sayhi4(){//使用工具类获取spring容器然后从中得到myService 这个bean调用其中的sayHi()方法MyService myService myApplicationObjectSupport.getApplicationContext().getBean(MyService.class);return myService.sayHi();}测试 方式⑤自定义工具类继承WebApplicationObjectSupport抽象类以获取spring容器 自定义工具类继承WebApplicationObjectSupport抽象类 代码示例如下 import org.springframework.stereotype.Component;
import org.springframework.web.context.support.WebApplicationObjectSupport;Component
public class MyWebApplicationObjectSupport extends WebApplicationObjectSupport {
} 在自定义Controller类中注入上面写好的工具类然后获取spring容器 Autowiredprivate MyWebApplicationObjectSupport myWebApplicationObjectSupport;GetMapping(/sayhi5)public String sayhi5(){//使用工具类获取spring容器然后从中得到myService 这个bean调用其中的sayHi()方法MyService myService myWebApplicationObjectSupport.getApplicationContext().getBean(MyService.class);return myService.sayHi();}测试 参考资料
https://www.bilibili.com/video/BV1QP4y137Tz/?spm_id_from333.788.top_right_bar_window_history.content.clickvd_source5a34715e416a427a73a3ca52397848b5