iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >SpringBoot怎么使用ApplicationContext获取bean对象
  • 392
分享到

SpringBoot怎么使用ApplicationContext获取bean对象

2023-06-25 15:06:37 392人浏览 泡泡鱼
摘要

小编给大家分享一下SpringBoot怎么使用ApplicationContext获取bean对象,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!使用ApplicationContext获取bean对象编写一个Applica

小编给大家分享一下SpringBoot怎么使用ApplicationContext获取bean对象,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

使用ApplicationContext获取bean对象

编写一个ApplicationContextFactory工厂类

public class ApplicationContextFactory{ private static ApplicationContext applicationContext = null; public static void setApplicationContext(ApplicationContext applicationContext) throws BeansException {  applicationContext = applicationContext; } public static ApplicationContext getApplicationContext(){  return applicationContext; }}

springBoot的启动类中设置ApplicationContext

public class Application { public static void main(String[] args) {  ConfigurableApplicationContext app = SpringApplication.run(Application.class, args);  ApplicationContextFactory.setApplicationContext(app); }}

通过ApplicationContextFactory获取SpringApplication从而获取bean对象

ApplicationContext applicationContext=ApplicationContextFactory.getApplicationContext();Clazz clazz = applicationContext.getBean(Clazz.class);

SpringBoot Bean注入的深入研究

下面代码可正常运行

DemoService

@Servicepublic class DemoService {    public void save(){        System.out.println("DemoService save");    }}

CommonClass

@Componentpublic class CommonClass {    @Resource    private DemoService demoService;    public void fun(){        System.out.println("fun");        demoService.save();    }}

Controller

@Resourceprivate CommonClass commonClass;@ResponseBody@GetMapping("/fun")public void fun(){    commonClass.fun();}

下面代码不能正常运行

DemoService

@Servicepublic class DemoService {    public void save(){        System.out.println("DemoService save");    }}

CommonClass

public class CommonClass {    @Resource    private DemoService demoService;    public void fun(){        System.out.println("fun");        demoService.save();    }}

Controller

@ResponseBody@GetMapping("/fun")public void fun(){    CommonClass commonClass = new CommonClass();    commonClass.fun();}

比较

比较两个代码发现后者与前者的区别:因后者的CommonClass 没有使用@Component标注,所以在Controller中不能才用注入方式生成CommonClass对象,而是才用new的方式生成了该对象。

这样一来,CommonClass 对象是手工创建,所以在它内部注入DemoService 对象的代码就错误了。

解决方案

新建工具

@Componentpublic class ApplicationContextUtil implements ApplicationContextAware {    private static  ApplicationContext act;    @Override    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {        act = applicationContext;    }        public static Object getBean(String beanName){        return act.getBean(beanName);    }}

:实际测试发现上面代码中的static不能省略

DemoService

@Servicepublic class DemoService {    public void save(){        System.out.println("DemoService save");    }}

CommonClass

public class CommonClass {    @Resource    private DemoService demoService;    public void fun(){    DemoService demoService = (DemoService) ApplicationContextUtil.getBean("demoService");        System.out.println("fun");        demoService.save();    }}

此处不再采用注入的方式获取DemoService对象,而是通过工具类的方式

Controller

@ResponseBody@GetMapping("/fun")public void fun(){    CommonClass commonClass = new CommonClass();    commonClass.fun();}

再次运行程序,一切正常

应用

在SpringBoot整合shiro的案例中,自定义Realm时,需要使用Service的对象。因为自定义的Realm类不能使用@Component之类的注解注释,所以使用本案例介绍的方法是正确的解决方案。尽管在1.6.0的shiro-all中下面代码可以正确运行:

SpringBoot怎么使用ApplicationContext获取bean对象

看完了这篇文章,相信你对“SpringBoot怎么使用ApplicationContext获取bean对象”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: SpringBoot怎么使用ApplicationContext获取bean对象

本文链接: https://www.lsjlt.com/news/305662.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot怎么使用ApplicationContext获取bean对象
    小编给大家分享一下SpringBoot怎么使用ApplicationContext获取bean对象,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!使用ApplicationContext获取bean对象编写一个Applica...
    99+
    2023-06-25
  • SpringBoot如何使用ApplicationContext获取bean对象
    目录使用ApplicationContext获取bean对象SpringBoot Bean注入的深入研究下面代码可正常运行下面代码不能正常运行比较解决方案应用使用Applicatio...
    99+
    2024-04-02
  • springboot怎么从容器中获取对象
    在Spring Boot中,可以使用`@Autowired`注解来从容器中获取对象。1. 首先,在需要获取对象的类中,使用`@Aut...
    99+
    2023-09-05
    springboot
  • Javascript怎么获取对象
    这篇文章主要介绍“Javascript怎么获取对象”,在日常操作中,相信很多人在Javascript怎么获取对象问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Javascri...
    99+
    2024-04-02
  • 使用ajax怎么获取json对象数组
    本篇文章为大家展示了使用ajax怎么获取json对象数组 ,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。如下所示:var obj= [{id: 1, pId:...
    99+
    2023-06-08
  • 怎么获取response对象
    在Python中,您可以使用requests库来发送HTTP请求并获取相应的response对象。首先,您需要安装requests库...
    99+
    2023-08-30
    response
  • SpringBoot怎么在线程中获取@Service Bean类
    这篇文章主要为大家展示了“SpringBoot怎么在线程中获取@Service Bean类”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SpringBoot怎么在线程中获取@Servi...
    99+
    2023-06-29
  • Springboot 如何获取上下文对象
    目录Springboot上下文对象获取或者更简单的写法:spring boot获取上下文 随时取出被spring管理的bean对象方法一:方式二:Springboot上下文对象获取 ...
    99+
    2024-04-02
  • spring怎么获取bean
    Spring获取Bean有以下几种方式:1. 使用@ComponentScan注解扫描指定包路径下的所有类,通过@Autowired...
    99+
    2023-09-05
    spring bean
  • JAVA怎么根据对象名获取对象
    在Java中,可以使用对象的引用来获取对象。对象引用是指向对象的指针或引用变量。要根据对象名获取对象,需要先创建对象,然后使用对象引...
    99+
    2023-10-28
    JAVA
  • js中怎么使用onclick获取当前对象
    在JavaScript中,可以使用`this`关键字来获取当前对象。在`onclick`事件中,可以通过将`this`作为参数传递给...
    99+
    2023-09-22
    js
  • 怎么用java反射获取对象
    这篇“怎么用java反射获取对象”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用java反射获取对象”文章吧。本教程操作...
    99+
    2023-06-30
  • Spring 代理 Bean 获取不到原始 Bean 对象注解解决方法
    目录一、问题描述1.问题示例代码二、解决方案一、问题描述 在接受 mq 消息的时候,需要做一个重试次数限制,如果超过 maxNum 就发邮件告警,不再重试。 所以...
    99+
    2024-04-02
  • SpringBoot 如何从容器中获取对象
    目录如何从容器中获取对象SpringBoot中的容器容器功能1、组件添加2、原生配置文件引入(xml文件引入)3、配置绑定如何从容器中获取对象 有时候在项目中,我们会自己创建一些类,...
    99+
    2024-04-02
  • Spring中怎么获取bean
    Spring中怎么获取bean,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Spring 中bean的获取通过context.getbean 的方式来获取bea...
    99+
    2023-06-20
  • Ajax中怎么获取XMLHttp对象
    Ajax中怎么获取XMLHttp对象,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Ajax 中要用到XMLHttp对象,我见过各种获取该对象的...
    99+
    2024-04-02
  • 怎么使用java反射获取对象属性值
    使用Java反射获取对象属性值的步骤如下:1. 获取对象的Class对象,可以通过对象的getClass()方法获取。```java...
    99+
    2023-09-26
    java
  • Spring中获取Bean对象的注入方式有哪些
    本篇内容主要讲解“Spring中获取Bean对象的注入方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring中获取Bean对象的注入方式有哪些”吧!前言获取 bean 对象也叫做对...
    99+
    2023-07-05
  • 怎么获取Ajax通信对象
    这篇文章主要介绍了怎么获取Ajax通信对象,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。实例如下:function getXHR(...
    99+
    2024-04-02
  • activity中怎么获取service对象
    在Activity中获取Service对象可以通过以下步骤: 在Activity中使用bindService()方法绑定Servi...
    99+
    2024-03-06
    activity
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作