使用SpringContextHolder获取bean实例】的更多相关文章

public static IConstantFactory me(){ return SpringContextHolder.getBean(beanName:"constantFactory"); } private static Constants constants = SpringContextHolder.getBean(Constants.class);…
十年阿里,就只剩下这套Java开发体系了 >>>   大家都知道,项目启动的时候,spring读取xml文件,将配置的bean 或者 注解下的controller service dao全部实例化.然后注入到代码里去使用.那么我们怎么自己去获取某个实例化的bean呢.自己new是没用的. 举个场景, 假设我写了一个类 public class A{ @Resource private static ADao aDao; static{   aDao.select(); } public …
// 得到上下文环境 WebApplicationContext webContext = ContextLoader .getCurrentWebApplicationContext(); // 使用上下文环境中的getBean方法得到bean实例 InhospDoctorStationController controller = (InhospDoctorStationController) webContext.getBean("inhospDoctorStationController…
import org.springframework.beans.factory.BeanFactory;import org.springframework.beans.factory.xml.XmlBeanFactory;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.context.support.FileSystemXmlApplica…
问: 这个问题困扰了我好久,一直疑问这个接口的bean是怎么注入进去的?因为只看到使用@Service注入了实现类serviceImpl,使用时怎么却获取的接口,而且还能调用到实现类的方法,难道这个接口是在什么时候自动注入了进去,且和实现类关联上了? 接口 public interface TestService { public String test(); } 实现类impl @Servicepublic class TestServiceImpl implements TestServic…
ApplicationContext ctx = new ClassPathXmlApplication("applicationContext.xml"); DataSource ds = (DataSource)ctx.getBean("dataSource");…
在使用Spring做IoC容器的时候,有的类不方便直接注入bean,需要手动获得一个类型的bean. 因此,实现一个获得bean实例的工具类,就很有必要. 以前,写了一个根据bean的名称和类型获取bean实例的2个工具方法,发现每次调用后,都需要强制转换成目标结果类型. 这样很不方便,突然想到可以使用Java泛型方法,实现1个新的工具方法,避免了类型转换. import org.springframework.beans.BeansException; import org.springfra…
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------…
原型Bean加载过程 之前的文章,分析了非懒加载的单例Bean整个加载过程,除了非懒加载的单例Bean之外,Spring中还有一种Bean就是原型(Prototype)的Bean,看一下定义方式: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="htt…
原型Bean加载过程 之前的文章,分析了非懒加载的单例Bean整个加载过程,除了非懒加载的单例Bean之外,Spring中还有一种Bean就是原型(Prototype)的Bean,看一下定义方式: 1 2 6 7 8 9 原型Bean加载流程总得来说和单例Bean差不多,看一下不同之处,在AbstractBeanFactory的doGetBean的方法的这一步: 1 else if (mbd.isPrototype()) { 2 // It's a prototype -> create a n…
前言 上篇文章我们对注册 Bean 的核心类 BeanDefinitionRegistry 进行了讨论,这里的注册 Bean 是指保存 Bean 的相关信息,也就是将 Bean 定义成 BeanDefinition,然后放入容器中.除此之外,Spring 还提供一个统一操作单例 Bean 实例的类 SingletonBeanRegistry,通过该类可直接对单例 Bean 的实例进行存储.注册等操作. SingletonBeanRegistry SingletonBeanRegistry 是一个…
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! <Spring 手撸专栏>目录 [x] 第 1 章:开篇介绍,我要带你撸 Spring 啦! [x] 第 2 章:小试牛刀,实现一个简单的Bean容器 [x] 第 3 章:初显身手,运用设计模式,实现 Bean 的定义.注册.获取 [x] 第 4 章:崭露头角,基于Cglib实现含构造函数的类实例化策略 [x] 第 5 章:一鸣惊人,为Bean对象注入属性和依赖Bean的功能实现 [ ]…
在之前的文章内容中,简单介绍了bean定义的加载过程,下面这篇的主要内容就是bean实例的创建过程. bean实例的创建方式 ApplicationContext context = new ClassPathXmlApplicationContext("application.xml"); context.getBean("beanDemo"); 首先看到上面的代码,使用了getBean方法,那么创建bean的入口是不是在getBean里面呢? 通过之前的内容,可…
Java提供了Class类,可以通过编程方式获取类别的字段和方法,包括构造方法    获取Class类实例的方法:   类名.class   实例名.getClass()   Class.forName(className) public class RefTest { @Test public void testRef(){ //Class cls = RefTest.class; //Class.forName("com.jboa.service.RefTest"); //new…
AM是放置服务方法的地方,有时我们需要在Managed Bean中调用这些方法.要调用这些方法,首先要在Managed Bean中获取AM实例.这里要用到<ADF工具类:ADFUtil.java 源代码>. 1. 获取默认的AM实例如果Model项目中只有一个AM,可以这样获取:ApplicationModule am = ADFUtils.getDCBindingContainer().getDataControl().getApplicationModule(); 2. 获取指定的AM实例…
spring中常用的功能主要的是ioc和aop,此处主要说明下,实例注册和使用的方法,此为学习后的笔记记录总结 1.使用xml文件配置 在idea中创建maven工程,然后创建实例Person,然后在配置文件中配置bean,具体代码如下所示:, public class Person { private String name; private Integer age; public Person(){ super(); } public Person(String name,Integer a…
SpringBoot 注册拦截器时,如果用New对象的方式的话,如下: private void addTokenForMallInterceptor(InterceptorRegistry registry) { InterceptorRegistration tokenInterceptor = registry.addInterceptor(new TokenInterceptor()); tokenInterceptor.addPathPatterns("/1");//默认需要…
在Web应用中,Spring容器通常采用声明式方式配置产生:开发者只要在web.xml中配置一个Listener,该Listener将会负责初始化Spring容器,MVC框架可以直接调用Spring容器中的Bean,无需访问Spring容器本身.在这种情况下,容器中的Bean处于容器管理下,无需主动访问容器,只需接受容器的依赖注入即可. 但在某些特殊的情况下,Bean需要实现某个功能,但该功能必须借助于Spring容器才能实现,此时就必须让该Bean先获取Spring容器,然后借助于Spring…
ApplicationContextAware获取bean 概述 在某些特殊的情况下,Bean需要实现某个功能,但该功能必须借助于Spring容器才能实现,此时就必须让该Bean先获取Spring容器,然后借助于Spring容器实现该功能.为了让Bean获取它所在的Spring容器,可以让该Bean实现ApplicationContextAware接口. Spring容器会检测容器中的所有Bean,如果发现某个Bean实现了ApplicationContextAware接口,Spring容器会在…
引言:我们从几个方面有逻辑的讲述如何从Spring容器中获取Bean.(新手勿喷) 1.我们的目的是什么? 2.方法是什么(可变的细节)? 3.方法的原理是什么(不变的本质)? 1.我们的目的是什么? 从Spring容器中获取Bean.这里是指配置文件中注册的bean,比如dubbo类型的bean.另外一大类是通过注解获取的Bean. 2. 方法是什么? ApplicationContext的主要实现类是ClassPathXmlApplicationContext和FileSystemXmlAp…
转自:http://chinazhaokeke.blog.163.com/blog/static/109409055201092811354236  Spring获取ApplicationContext方式 我自己常用的方法: 读取一个文件1 //创建Spring容器 ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml"); //获取chinese 实例 Person p = ctx.getBean…
创建Bean实例的方式: 1) 通过构造器(有参或无参) 方式: <bean id="" class=""/> 2) 通过静态工厂方法 方式: <bean id="" class="工厂类" factory-method="静态工厂方法"/> 注: 工厂类实例没有创建 3) 通过实例工厂方法(非静态方法) 方式: <bean id="factory" cla…
整个spring mvc的架构如下图所示: 上篇文件讲解了DispatcherServlet第二步:通过request从Controller获取ModelAndView.现在来讲解第三步:request 从ModelAndView中获取view对象. 获取view对象一般是通过viewResolver来解析view name来完成的.若ModelAndView中view 不存在或者ModelAndView本身为null则填充默认值.代码如下: ModelAndView中view 不存在或者Mod…
SpringApplicationUtils.java import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; import ja…
场景: 在代码中需要动态获取spring管理的bean 目前遇到的主要有两种场景:1.在工具类中需要调用某一个Service完成某一个功能,如DictUtils2.在实现了Runnable接口的任务类中需要调用某一个Service完成run方法中的功能! 代码: SpringContextUtils.java import org.springframework.beans.BeansException; import org.springframework.context.Applicatio…
工作中需要对一个原本加载属性文件的工具类修改成对数据库的操作当然,ado层已经写好,但是需要从Spring中获取bean,然而,工具类并没有交给Spring来管理,所以需要通过方法获取所需要的bean.于是整理了Spring获取bean的几种方法. 一. 在初始化时保存ApplicationContext对象 ApplicationContext ac = new FileSystemXmlApplicationContext("classpath:beans.xml"); ac.ge…
前言 在Spring中提供了非常多的方式注入实例,但是由于在初始化顺序的不同,基于标注的注入方式,容易出现未被正确注入成功的情况. 本文将介绍一种在实际项目中基于动态的方式来提取Spring管理的Bean. 下面话不多说了,来一起看看详细的介绍吧. 一.基于标注的方式注入实例 需要在Bean初始化之时,其依赖的对象必须初始化完毕.如果被注入的对象初始化晚于当前对象,则注入的对象将为null. 1.1 @Autowired 按照类型来加载Spring管理的Bean.默认情况下要求其Bean必须存在…
如果在web项目中,用到定时器的朋友可能会遇到使用spring注解的方式获取bean的时候报空指针的异常.这是就可以使用手工的方法获取spring容器中的bean了. 下面是具体的方法: 1.先说一个最简单的方法 ContextLoaderListener.getCurrentWebApplicationContext().getBean ("beanName"); 只要传入bean的name就可以获取了,简单方便. 2.实现BeanFactoryAware接口 package cn.…
在容器启动快完成时,会把所有的单例bean进行实例化,也可以叫做预先实例化. 这样做的好处之一是,可以及早地发现问题,及早的抛出异常,及早地解决掉. 本文就来看下整个的实例化过程.其实还是比较繁琐的. 一.从容器中找出所有的bean定义名称 因为不知道谁是单例bean,所以只能先全部找出来.如下图01: 二.循环遍历所有的bean名称,检查是否符合条件 首先要合并bean定义,因为bean定义可以有父子关系,类似继承. 然后这个合并后的bean定义必须是,非抽象的,单例的,非延迟初始化的. 那么…
一.实现 ApplicationContextAware 接口 package com.zxguan; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; /** * @author zxguan * @descriptio…