Spring Boot获取bean的方式有哪些 您所在的位置:网站首页 javabean乱码 Spring Boot获取bean的方式有哪些

Spring Boot获取bean的方式有哪些

2023-04-24 04:58| 来源: 网络整理| 查看: 265

Spring Boot获取bean的方式有哪些 发布时间:2023-04-21 15:06:39 来源:亿速云 阅读:61 作者:iii 栏目:开发技术

本文小编为大家详细介绍“Spring Boot获取bean的方式有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Spring Boot获取bean的方式有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

在使用spring框架中我们都知道,某个类如果使用了@Service、@Autowire 这种依赖注入的方式引用了其他对象,在另外一个类中,只有通过spring的IOC容重中获取这个类的实例时,那些被依赖的对象才能正确被初始化,否则那些被依赖的对象都是null。 

所以就有一个问题,在普通类中如何获取spring ioc容器中的bean(spring托管的bean)。

我们都知道,在spring中ApplicationContext这个上下文对象是获取bean的基础。

在spring boot中,我们可以通过下面的三种方式来获取Bean。

方式一 注解@PostConstruct

Spring Boot获取bean的方式有哪些

PostConstruct 注释用于在依赖关系注入完成之后需要执行的方法上,以执行任何初始化。此方法必须在将类放入服务之前调用。

支持依赖关系注入的所有类都必须支持此注释。即使类没有请求注入任何资源,用 PostConstruct 注释的方法也必须被调用。只有一个方法可以用此注释进行注释。

应用 PostConstruct 注释的方法必须遵守以下所有标准:

该方法不得有任何参数,除非是在 EJB 拦截器 (interceptor) 的情况下,根据 EJB 规范的定义,在这种情况下它将带有一个 InvocationContext 对象 ;该方法的返回类型必须为 void;该方法不得抛出已检查异常;应用 PostConstruct 的方法可以是 public、protected、package private 或 private;除了应用程序客户端之外,该方法不能是 static;该方法可以是 final;如果该方法抛出未检查异常,那么不得将类放入服务中,除非是能够处理异常并可从中恢复的 EJB。

方式二 启动类ApplicationContext

实现方式:在springboot的启动类中,定义static变量ApplicationContext,利用容器的getBean方法获得依赖对象。

import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; /**  * @author: clx  * @version: 1.1.0  */ @SpringBootApplication public class Application {     public static ConfigurableApplicationContext ac;     public static void main(String[] args) {        ac = SpringApplication.run(Application.class, args);     }   }

调用方式

/**  * @author: clx  * @version: 1.1.0  */ @RestController public class TestController {     /**      * 方式二      */     @GetMapping("test2")     public void method_2() {         AutoMethodDemoService methodDemoService = Application.ac.getBean(AutoMethodDemoService.class);         String test2 = methodDemoService.test2();         System.out.println(test2);     } }方式三 手动注入ApplicationContextimport org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component;     /**  * springboot静态方法获取 bean 的三种方式(三)  * @author: clx  * @version: 1.1.0  */ @Component public class StaticMethodGetBean_3 implements ApplicationContextAware {     private static ApplicationContext applicationContext;     @Override     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {         StaticMethodGetBean_3.applicationContext = applicationContext;     }       public static  T  getBean(Class clazz) {         return applicationContext != null?applicationContext.getBean(clazz):null;     } }

调用方式

/**  * 方式三  */ @Test public void method_3() {     AutoMethodDemoService autoMethodDemoService = StaticMethodGetBean_3.getBean(AutoMethodDemoService.class);     String test3 = autoMethodDemoService.test3();     System.out.println(test3); }

读到这里,这篇“Spring Boot获取bean的方式有哪些”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

推荐阅读: Spring Boot中使用Java API调用lucene的示例分析 Springboot怎么与graylog结合使用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

springboot bean 上一篇新闻:Vue怎么实现自定义视频和图片上传 下一篇新闻:JavaScript事件机制是什么 猜你喜欢 WebFlux 前置知识有哪些 Spring Security5.5支持OAuth2.0第五种授权模式是什么 Nacos客户端是如何在SpringCloud进行集成和实现的 微前端架构的示例分析 如何使用Loki监控SpringBoot应用 Sentinel流控规则的介绍 Spring中的配置怎么保证可扩展性 应对高并发的方法有哪些 如何用SpringCloud Alibaba实现业务日志组件 如何用Asyncio协程构建高并发应用


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有