核心容器的两个接口.ApplicationContext和BeanFactory 怎么知道对象被创建了呢 我们只需要在实现类里面构造函数内打印输出一段话 然后再这里加上一个断点 运行程序,光标停在这个位置 往下走一步.对象被创建了.这就是加载了配置文件.对象实例立马被创建了. BeanFactory延迟加载的方式 右键BeanFactory BeanFactory有个过时的实现是XmlBeanFactory 创建XmlBeanFactory里面参数有要求 那就在上面定义需要的参数Resource…
创建新项目 修改为jar包的方式 把上一个工程内的代码 java下的com复制过来 由于配置文件没有,所以一运行就会报错 factory文件夹整个删除 dao的实现类 这里删除 测试类保留这两行代码 加入spring 的依赖 导入我们的依赖里面就会出现这些jar包 给的资料里面的jar包和我们在项目里面看到的jar包 不大一样 spring把apache的日志集成组件.集成到了spring的jar包里面了. 查看依赖关系 spring必备的核心容器 创建配置文件 文件名字可以随便起.只要不是中文…
适应配置的方式解决我们刚才的编码操作 -dist结尾的就是spring 的开发包 解压好的 这里面是约束 libs是扎包 三个为一组,实际上只有21个 自己在使用需要导入jar包的时候,选择这种没有任何 一般都是打开这个index.html IOC只能解决程序之间的依赖关系 接下来将用这个工程基础之上做演示.…
IOC的含义 new的方式创建对象,是主动去找对象.对我的资源独立就变的很难,因为这有明显的依赖关系 第二种方式创建对象.app断开了和资源的联系,.而是去找工厂要一个资源.由工厂负责和资源去的联系,并把想要的对象再转到应用系统 AccountServiceImpl使用上面这行代码也是完全可以找到自己想要的dao的   但是它自己完全找到这个dao的权利放弃了.把这个权利交给了BenFactory.BenFactory再通过一个固定的名称之后.给我们找到我想要的bean对象.这个对象是不是你能用…
新建工程 改成jar包 加入spring的依赖 复制之前的工程代码 再复制配置文件 fac factory整个删除 构造函数也删除.删除后的代码.如下 配置文件中的注释都删除掉 spring中的依赖注入 能注入的类型 今天涉及三类类型和两种方式…
区分单例还是多例对象 单例的几个状态 初始化方法和销毁方法 设置成我们定义的方法 测试 有创建和初始化.但是没有销毁,.对象一直没有销毁的方法 main方法是一切应用程序的入门.当main方法结束后.我们当前应用中线程占用的内存全部释放.这里当前也包含了我们的容器. 此时没来得及调用销毁方法就已经消失了. 只能手动关闭容器. 这里close方法报错了. 这是因为ClassPathXmlApplicationContext用的是ApplicationContext这个接口类型去接收的 多态的特点.…
bean的作用范围调整. 我们的bean通常情况下都是一个单例的模式 Spring是否也知道这些都是单例 构造函数只走了一次.也就是spring这个对象默认情况就是单例的 scope属性 定义bean的范围 默认有这几种形式.默认是单例singleton 选择singleton查看到的效果. 如果改成prototype的话 打印输出了两次对象. prototype就是多例的 常用的是singleton单例和prototype多例 global session的含义 当用户访问量大.访问量一台服务…
目前这里能调用是因为,在service的实现类里面,new了一个dao的对象 正常情况下 这里不应该是new一个对象,应该等于null或为空 设置为空侯再运行就会报错 出错的原因是这里为null 需要讲完Bean的细节后.再来看上面的代码. 新建一个项目 配置打包方式 加入spring 的依赖 复制03里面的代码进来. 复制到04的里面 dao的包整个删除 service中不再调用dao类.都删除 复制bean.xml到新项目里 spring对bean的管理细节 第一种方式创建bean Serv…
再复制一份,改名3 常用的注入方式,这里选择set saveAccount方法输出所有的对象 map需要导包 配置xml 集合类型的值配置方式 在property标签里面再写标签 这里选择array.array代表数组 里面用value配置 测试.访问accountService3 list Set 把第一个改成set 第二个改成array,第三个改成list 再次执行测试 接着往下写.myMap用map标签.entry的两种写法 props标签 把myMap的内容.复制到 props复制到了m…
复制AccountServiceImpl类改名叫做AccountServiceImpl2 生成三个属性值的set方法.注入只需要set方法,并不需要get方法 配置bean,用到property这个标签 属性有name.value和ref这三个属性 输入name 提示的选择项有 age\birthday\name这三个 把这个setName改成setUserName name属性的提示里面就成了username 也就是在找name的值的时候并不管拟变量定义的是什么,只关心set方法叫什么,且去掉…
在AccountServiceImpl内定义三个属性 这里关注点是这几种类型.基本类型的包装类Integer 还有String类型,也包含了其他bean类型.Date 定义构造函数并赋值 重点关注在数据类型上 配置文件中,这里已经开始报错了.这种方式是默认构造函数的形式.因为AccountServiceImpl已经没有了默认构造函数 constructor-arg里面有5个属性 设置type属性为String类型.value值为test 这样就会把test中注入到构造函数中是String类型的成…
如何找到接口的实现类 BeanFactory是核心容器的顶层接口 查看接口的实现类 接下来介绍这三个实现类 把bean.xml复制到桌面上面 运行测试程序 实际更常用ClassPathXmlApplicationConect…
之前也在用这三个接口,但是对于他们的概念还是处于朦胧状态,同时,也不知道他们之间是一个什么关系,趁着现在有点时间总结一下吧,也需要对你有所帮助.一.BeanFactory       基本认识:       该接口提供了高级IOC配置机制,实现对不同类型JAVA对象的统一管理,从字面意思来理解意思是Bean工厂,即用来创建Bean的工厂,这里的Bean和我们之前理解的JavaBean有些不同,之前我们理解的JavaBean需要符合一定的规范,而这里的Bean范围更大,在这里凡是可以被Spring…
BeanFactory和ApplicationContext的区别 ApplicationContext 方式加载:创建容器的同时 容器初始化,容器所有的bean创建完毕   Spring容器中获取一个对象 通过类型直接获取 BeanFactory 方式加载:创建容器对象,BeanFactory当调用getBean获取响应对象是才创建对象 Spring容器中获取一个对象 通过类型直接获取 这两个区别是一个容器加载的时候实例化对象,一个是在使用的时候才实例化对象. 静态工厂注入: 1.创建静态工厂…
spring的ioc容器是一种特殊的Ioc Service Provider(ioc服务提供者),如果把普通的ioc容器认为是工厂模式(其实很相似),那spring的ioc容器只是让这个工厂的功能更强大服务更全面,它们之间存在一定的交集.   Spring提供两种容器类型:BeanFactory和ApplicationContext BeanFatory:基础类型IoC容器,提供完整的IoC服务支持.默认采用延迟初始化策略(lazy-load).只有当客户端对象需要访问容器中的某个受管理对象的时…
1. Spring的IoC容器和IoC Service Provider的关系 Spring的IoC容器和IoC Service Provider所提供的服务之间存在一定的交集,二者的关系如图4-1所示. 2. Spring提供了两种容器类型:BeanFactory和ApplicationContext.  BeanFactory. 基础类型IoC容器,提供完整的IoC服务支持.如果没有特殊指定,默认采用延迟初始化策略(lazy-load). 只有当客户端对象需要访问容器中的某个受管对象的时候…
BeanFactory:Bean工厂接口,是访问Spring Bean容器的根接口,基本Bean视图客户端.从其名称上即可看出其功能,即实现Spring Bean容器的读取. ApplicationContext:一个应用配置的中心接口,提供以下功能: 1.Bean factory methods for accessing application components,Inherited from {@link org.springframework.beans.factory.Listabl…
转自:http://blog.csdn.net/intlgj/article/details/5660587 在spring中,两个最基本最重要的包是 org.springframework.beans 和 org.springframework.context. 这两个包中的代码为Spring的反向控制 特性(也叫作依赖注射)提供了基础. 第一, BeanFactory BeanFactory实际上是实例化,配置和管理众多bean的容器. 这些bean通常会彼此合作,因而它们之间会产生依赖.…
我用一个例子去测试BeanFactory和ApplicationContext的区别 首先建立一个bean public class User { //声明无参构造,打印一句话,监测对象创建时机 public User(){ System.out.println("User对象初始化"); } } 然后再建立测试类 public class UserTest { @Test public void ApplicationContexttest(){ ApplicationContext…
1. BeanFactory负责读取bean配置文档,管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的生命周期. 2. ApplicationContext除了提供上述BeanFactory所能提供的功能之外,还提供了更完整的框架功能: a. 国际化支持 b. 资源访问:Resource rs = ctx. getResource(“classpath:config.properties”), “file:c:/config.properties” c. 事件传递:通过实现…
1. spring ioc的优点    解耦,对象的创建不直接在代码里生成(不方便修改) ,交由容器创建.... 2.IOC 和 DI 的区别        依赖关系:A类 里 要调用B类  如 service 要调用 Dao  可以把Dao 依赖注入到 service里  构造器注入  setter注入 3.BeanFactory 和 ApplicationContext 的区别 4. Bean  实例化的几种方式   无参构造器实例化   静态工厂实例化  实例工厂实例化 5. Bean 的…
(一)Spring的IOC学习 在applicationContext.xml来配置bean,通过该接口,在主程序中,可以指定初始化的对象,不需要在进行赋值操作,直接在xml里配置好. 接下来分享的是bean配置的多种方法: ①通过类的id获取bean <bean id="user" class="com.author.bean.user"> <property name="name" value="Spring&qu…
目录 什么是 Spring Spring 的整体架构 什么是 IoC Bean 的概念 Spring 的基本使用 Spring 的两种 IoC 容器 Spring 容器的基本工作原理 Spring Bean 的注册与装配 Spring Bean 的作用域与生命周期 什么是 Spring Spring 是一个轻量级的企业级软件开发框架,它于2004年发布第一个版本,其目的是用于简化企业级应用程序的开发. 在传统应用程序开发中,一个完整的应用是由一组相互协作的对象组成,开发一个应用除了要开发业务逻辑…
Spring概念 1.1.1 spring 是什么 Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层 Spring MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的 Java EE 企业应用开源框架…
描述 大家都知道Java读普通文件是通过Basic I/O 中的InputStream.OutStream.Reader.Writer 等实现的.在spring 框架中,它是怎样识别xml这个配置文件的呢? 这就要靠IoC容器的两个接口BeanFactory 和ApplicationContext:BeanFactory在spring-bean的jar里,ApplicationContext在spring-context的jar里. BeanFactory (接口) |--------XmlBe…
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1.14.RELEASE 开始阅读这一系列文章之前,建议先查看<深入了解 Spring IoC(面试题)>这一篇文章 该系列其他文章请查看:<死磕 Spring 之 IoC 篇 - 文章导读> BeanDefinition 的加载阶段(XML 文件) 上一篇文章 <Bean 的&qu…
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1.14.RELEASE 开始阅读这一系列文章之前,建议先查看<深入了解 Spring IoC(面试题)>这一篇文章 该系列其他文章请查看:<死磕 Spring 之 IoC 篇 - 文章导读> BeanDefinition 的解析阶段(XML 文件) 上一篇文章<BeanDefini…
原文出自:http://cmsblogs.com 在上篇博客[死磕Spring]----- IOC 之 加载 Bean 中提到,在核心逻辑方法 doLoadBeanDefinitions()中主要是做三件事情. 调用 getValidationModeForResource() 获取 xml 文件的验证模式 调用 loadDocument() 根据 xml 文件获取相应的 Document 实例. 调用 registerBeanDefinitions() 注册 Bean 实例. 这篇博客主要分析…
一.摘要         本文为作者搜集的Spring关于IoC/DI相关知识的记录整理笔记.介绍了IoC(控制反转)是一种设计原则,用于降低代码的耦合度.介绍了IoC是通过BeanDefinition来定义Bean对象及其关系,用BeanFactory来管理Bean的生命周期.   二.什么是IoC/DI         IoC,全称Inversion of Control,控制反转,是面向对象编程中的一种设计原则,这种设计可以减低计算机代码之间的耦合度.         通过IoC,对象在创…
在前面博客中介绍什么是依赖注入时有提到:依赖注入是组件之间依赖关系由容器在运行期决定,即由容器动态的将某个依赖关系注入到组件之中.那什么是容器?既然Spring框架实现了IOC,那Spring中的容器是什么呢? 一.容器介绍在日常生活中容器是指用以容纳物料并以壳体为主的基本装置,它是用来盛放东西的.在编程中容器是用来存储和组织其他对象的对象,首先要确定容器也是对象,也可以当做bean,只是这个对象是用来存储和组织其他对象,那其他对象是什么呢?其他对象其实就是bean对象,这也是面向对象编程的一种…