Spring容器的getBean方法是通过反射机制实现的,下面的测试程序模拟getBean的实现原理. 步骤一:pom.xml文件配置解析XML文件的dom4j.jar 步骤二:XML文件中配置bean标签 步骤三:创建测试类ParseSpringXMLTest,设置成员属性,由于bean标签中没有设置Scope属性,故默认使用singleton创建单例.这里创建一个Map集合保存创建好的对象. 步骤四:创建构造器,初始化成员属性 步骤五:模拟实现getBean方法 步骤六:测试程序 步骤七:控…
一直知道Spring是运用反射技术的,但具体怎么用呢?今天就模拟下getBean方法. 步骤: 1.用Dom4j解析xml配置文件,取出我们需要的信息 2.遍历Bean节点,根据每个Bean节点的class属性值通过反射生成相应的对象 3.解析Bean节点的子节点,用于给对象的属性赋值(调用set方法)或者其他 4.把每个Bean节点封装好的对象放入Map集合里 具体操作如下: 一.xml配置(自己模拟写的xml) <?xml version="1.0" encoding=&qu…
很多时候,我们在普通的java类中需要获取spring的bean来做操作,比如,在线程中,我们需要操作数据库,直接通过spring的bean中构建的service就可以完成.无需自己写链接..有时候有些好的东西,拿到用就好了. 这里是多种方式中的一种. 通过实现ApplicationContextAware获取bean.这里有个问题,就是,如果spring容器没有启动完成的时候,不能通过这个方法获取,因为这样,会报空指针,因为 private static ApplicationContext…
spring源码版本5.0.5 Spring容器创建之后,会调用它的refresh方法刷新Spring应用的上下文. 首先整体查看AbstractApplicationContext#refresh源码 public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { //刷新前的预处理; prepareRefresh(); //获取B…
搭建Spring 1.porm.xml中添加jar包 <!-- spring3 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.1.2.RELEASE</version> </dependency> <dependency> &l…
先看一个Spring中Bean的实例化过程: 1.配置文件中指定Bean的init-method参数 <bean class="com.jts.service.UserService" init-method="init"></bean> 缺点:注解方式实例化Bean时无法使用 2.Bean实现InitializingBean接口(推荐,Spring源码和框架搭建中大量使用) InitializingBean接口只有一个方法afterProp…
spring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口.它们都可以代表spring容器,spring容器是生成bean实例的工厂,并管理容器中的bean.在spring中,所有的组件都被看做bean处理,包括数据源.Hibernate的SessionFactory.事务管理器等. 应用中的所有组件都处于spring的管理下,都被spirng以bean的方式管理,spring负责创建bean…
pring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口.他们都可代表Spring容器,Spring容器是生成Bean实例的工厂,并且管理容器中的Bean. Bean是Spring管理的基本单位,在基于Spring的Java EE应用中,所有的组件都被当成Bean处理,包括数据源.Hibernate的SessionFactory.事务管理器等.在Spring中,Bean的是一个非常广义的概念,…
Spring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口.他们都可代表Spring容器,Spring容器是生成Bean实例的工厂,并且管理容器中的Bean. Bean是Spring管理的基本单位,在基于Spring的Java EE应用中,所有的组件都被当成Bean处理,包括数据源.Hibernate的SessionFactory.事务管理器等.在Spring中,Bean的是一个非常广义的概念…
本篇博客主要是使用java代码模拟spring的IOC容器,实现依赖注入:当然只是模拟spring容器中简单的一点实现原理而已,加深一些自己对spring框架的底层原理的理解: 使用的技术:dom4j xml解析技术   工厂模式    java反射技术 关于工厂模式:主要作用是对象的的解耦,通过容器中的方法获取对象,而不是在需要的类中去 new 对象:针对接口编程,不需要关注具体的实现方式: 如:一个对象:Car 依赖的对象有 Engine   Wheel  Door 不用工厂模式此时如果需要…