当前位置: 首页 > 后端技术 > Java

SpringBoot获取bean的3种方式!还有谁不会??

时间:2023-04-02 09:22:31 Java

来源:blog.csdn.net/showchi/article/details/97005720注意:调用者必须注解spring管理方法@PostConstructimportcom.example.javautilsproject.service.AutoMethodDemoService;importorg.springframework.beans.factory。annotation.Autowired;importorg.springframework.stereotype.Component;导入javax.annotation.PostConstruct;/***Springboot静态方法获取bean的三种方式(一)*@author:clx*@version:1.1.0*/@ComponentpublicclassStaticMethodGetBean_1{@AutowiredprivateAutoMethodDemoServiceautoMethodDemoService;@AutowiredprivatestaticAutoMethodDemoServicestaticAutoMethodDemoService;@PostConstructpublicvoidinit(){staticAutoMethodDemoService=autoMethodDemoService;}publicstaticStringgetAuthorizer(){returnstaticAutoMethodDemoService.test();}}PostConstruct注解用于依赖注入完成后需要执行的方法,以执行任何初始化。必须在将类放入服务之前调用此方法。所有支持依赖注入的类都必须支持这个注解。即使该类不请求注入任何资源,也必须调用使用PostConstruct注释的方法。该注解只能注解一个方法。应用PostConstruct注释的方法必须符合以下所有条件:该方法不得有任何参数,但EJB拦截器除外,在这种情况下,它将采用EJB定义的InvocationContext对象规格;方法的返回类型必须为void;该方法不得抛出已检查的异常;应用PostConstruct的方法可以是public、protected、packageprivate或private;除了应用程序客户端,该方法不能是静态的;该方法可以是最终的;如果该方法抛出未经检查的异常,则不得将该类投入使用,除非它是可以处理异常并从异常中恢复的EJB。方法二启动类ApplicationContext实现方法:在springboot启动类中,定义静态变量ApplicationContext,使用容器的getBean方法获取依赖对象importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.context.ConfigurableApplicationContext;/***@author:clx*@version:1.1.0*/@SpringBootApplicationpublicclassApplication{publicstaticConfigurableApplicationContextac;publicstaticvoidmain(String[]args){ac=SpringApplication.run(Application.class,args);}}调用方法/***@author:clx*@version:1.1.0*/@RestControllerpublicclassTestController{/***方法2*/@GetMapping("test2")publicvoidmethod_2(){AutoMethodDemoServicemethodDemoService=Application.ac.getBean(AutoMethodDemoService.class);Stringtest2=methodDemoService.test2();System.out.println(test2);}}方法三手动注入ApplicationContextimportorg.springframework.beans。异常;进口torg.springframework.context.ApplicationContext;导入org.springframework.context.ApplicationContextAware;导入org.springframework.stereotype.Component;/***springboot静态方法获取bean的三种方法(三)*@author:clx*@version:1.1.0*/@ComponentpublicclassStaticMethodGetBean_3implementsApplicationContextAware{privatestaticApplicationContextapplicationContext;@OverridepublicvoidsetApplicationContext(ApplicationContextapplicationContext)throwsBeansException{StaticMethodGetBean_3.applicationContext=applicationContext;}publicstaticTgetBean(Classclazz){returnapplicationContext!=null?applicationContext.getBean(clazz):null;}}调用方法/***方法三*/@Testpublicvoidmethod_3(){AutoMethodDemoServiceautoMethodDemoService=StaticMethodGetBean_3.getBean(AutoMethodDemoService.class);Stringtest3=autoMethodDemoService.test3();System.out.println(test3);}以上三种方式楼主都测试它可以用于完美。近期热点文章推荐:1.1000+Java面试题及答案(2021最新版)2.别在满屏的if/else里,试试策略模式,真香!!3.操!Java中xx≠null的新语法是什么?4、SpringBoot2.5发布,深色模式太炸了!5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!

最新推荐
猜你喜欢