一直以来忙于项目的开发,Spring虽然不用,一直想系统地学习一下,想看看它的源码,都没有时间,这段时间比较充裕,就索性先把Spring学习下,熟悉各个功能再去探究它内部的实现。就从Ioc篇开始学习。

1、实例化spring容器的两种方法

      方法一:在类路径下寻找配置文件来实现Spring容器的实例化

  1. ApplicationContext cx= new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});

方法二:在文件系统路径下寻找配置文件进行Spring容器的实例化

  1. ApplicationContext cx= new FileSystemXmlApplicationContext(new String[]{"D:\\applicationContext.xml"});

在实际的应用中建议使用第一种方式,在程序开发中比较灵活,与路径无关。同时,sping可以指定多个配置文件,由数组传入。

2、实例化bean的三种方式

       方法一:使用类构造器实例化

  1. //接口
  2. package com.cvicse.service;
  3. public interface PersonService {
  4. public void save();
  5. }
  6. //实现类
  7. package com.cvicse.service.impl;
  8. import com.cvicse.service.PersonService;
  9. public class PersonServiceBean implements PersonService {
  10. public void save(){
  11. System.out.println("我是save()方法");
  12. }
  13. }

在applicationContext.xml的XML中配置如下:

  1. <bean id="personService" class="com.cvicse.service.impl.PersonServiceBean"></bean>

在应用类中调用

  1. ApplicationContext cx= new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
  2. PersonService personService = (PersonService)cx.getBean("personService");
  3. personService.save();

       方法二:使用静态工厂方法实例化

在方法一的基础上添加一个静态工厂方法,专门实例化bean

  1. package com.cvicse.service.impl;
  2. public class PersonServiceBeanFactory {
  3. public static PersonServiceBean createPersonServiceBean(){
  4. return new PersonServiceBean();
  5. }
  6. }

在applicationContext.xml的XML中配置如下:

  1. <bean id="personService" class="com.cvicse.service.impl.PersonServiceBeanFactory"
  2. factory-method="createPersonServiceBean"/>

在应用类中调用

  1. ApplicationContext cx= new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
  2. PersonService personService = (PersonService)cx.getBean("personService");
  3. personService.save();

       方法三:使用实例工厂方法实例化

       在方法一的基础上添加一个工厂方法类,用于bean的实例化

  1. package com.cvicse.service.impl;
  2. public class PersonServiceBeanFactory {
  3. public PersonServiceBean createPersonServiceBean(){
  4. return new PersonServiceBean();
  5. }
  6. }

在applicationContext.xml的XML中配置如下:

  1. <bean id="personServiceFactory" class="com.cvicse.service.impl.PersonServiceBeanFactory"/>
  2. <bean id="personService" factory-bean="personServiceFactory" factory-method="createPersonServiceBean"/>

在应用类中调用

  1. ApplicationContext cx= new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
  2. PersonService personService = (PersonService)cx.getBean("personService");
  3. personService.save();

3、bean的作用域范围

    (1) singleton:默认的情况下在容器启动只有一个bean的实例化对象,在容器实例化的时候初始化。如果添加了lazy-init=“true”则会延迟加载。

(2) prototype:每次调用都会初始化一个新的实例对象

  1. <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean" scope="prototype"/>

(3) request

(4) session

(5)global session

 4、spring容器管理bean的生命周期

      bean默认的情况下是在sping容器实例化的时候被创建,在spring容器关闭之前被销毁。

      在配置文件中可以为每个bean指定初始化方法和销毁方法

  1. <strong> <bean id="personService"
  2. class="cn.com.impl.PersonServiceBean"
  3. init-method="initMethod" destroy-method="destroyMethod"></bean></strong>


Spring学习 Ioc篇(一 )的更多相关文章

  1. Spring学习 Ioc篇(三)

    1.在注解注入方式中,首先要在xml中引入如下的红线的命名空间: <?xml version="1.0" encoding="UTF-8" ?> & ...

  2. Spring学习 Ioc篇(二 )

    5.spring依赖注入的方式 方法一:使用构造器方式进行注入 1.dao的类和接口 package com.cvicse.dao.impl; import com.cvicse.dao.Person ...

  3. 死磕Spring之IoC篇 - 文章导读

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  4. 死磕Spring之IoC篇 - BeanDefinition 的加载阶段(XML 文件)

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  5. 死磕Spring之IoC篇 - BeanDefinition 的解析阶段(XML 文件)

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  6. 死磕Spring之IoC篇 - 解析自定义标签(XML 文件)

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  7. 死磕Spring之IoC篇 - BeanDefinition 的解析过程(面向注解)

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  8. 死磕Spring之IoC篇 - 开启 Bean 的加载

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  9. 死磕Spring之IoC篇 - Bean 的创建过程

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

随机推荐

  1. 读javascript高级程序设计08-引用类型之Global、Math、String

    一.Global 所有在全局作用域定义的属性和方法,都属于Global对象. 1.URI编码: encodeURI():主要用于对整个URI编码.它不会对本身属于URI的特殊字符进行编码. encod ...

  2. 读<jquery 权威指南>[1]-选择器及DOM操作

    今天是小年了,2013马上要过去了,但是学习不能间断啊.最近正在看<jQuery权威指南>,先温习一下选择器和DOM操作. 一.基本选择器 1.table单双行: $(function ( ...

  3. 第一章 企业项目开发--maven+springmvc+spring+mybatis+velocity整合

    说明:本系列文章主要是对自己在一家大型互联网公司实习的过程中对所学知识的总结!参与的是实际中使用的上线项目. 代码的github地址:https://github.com/zhaojigang/ssm ...

  4. 省常中模拟 day1

    第一题: 题目大意: 给出N个数的数列,如果相邻的两个数加起来是偶数,那么就可以把这两个数消掉,求最多能消掉多少数. 解题过程: 1.先自己手工模拟了几组数据,发现不管消除的顺序如何,最终剩下的是一定 ...

  5. JAVA 泛型与通配符的使用

    泛型的本质是参数化类型.即所操作的数据类型被指定为一个参数. 1.jdk 1.5/1.6 必须显式的写出泛型的类型. 2.jdk 1.7/1.8 不必显式的写出泛型的类型. 一.泛型声明 可以用< ...

  6. Servlet里面url-pattern的通配符*的使用规则

    简单来说: 以”/’开头和以”/*”结尾的是用来做路径映射的. 以前缀”*.”开头的是用来做扩展映射的. “/” 是用来定义default servlet映射的. 剩下的都是用来定义详细映射的.比如: ...

  7. 使用xca生成SSL证书

    先下载安装xca工具,地址是http://xca.hohnstaedt.de/ 先用xca创建一本ca证书 xca打开的界面 依次File, New DataBase,选择xdb文件保存路径,再输入密 ...

  8. Hadoop1.2.1 全集群3节点安装-rpm安装

    1.在三个节点上安装JDK RPM 2.在三个节点上安装HADOOP-1.2.1 RPM rpm方式安装和gz解压方式安装后的目录结构有些不同.安装好之后无需设置HADOOP_HOME环境变量 [ro ...

  9. Oracle数据库中scott用户不存在的解决方法

    SCOTT用户是我们学习Oracle过程中一个非常重要的实验对象,在我们建立数据库的时候,如果是选择定制模式的话,SCOTT用户是不会默认出现的,不过我们可以通过使用几个简单命令来使这个用户出现.以下 ...

  10. AngularJs的UI组件ui-Bootstrap分享(二)——Collapse

    Collapse折叠控件使用uib-collapse指令 <!DOCTYPE html> <html ng-app="ui.bootstrap.demo" xml ...