Spring学习 Ioc篇(一 )
一直以来忙于项目的开发,Spring虽然不用,一直想系统地学习一下,想看看它的源码,都没有时间,这段时间比较充裕,就索性先把Spring学习下,熟悉各个功能再去探究它内部的实现。就从Ioc篇开始学习。
1、实例化spring容器的两种方法
方法一:在类路径下寻找配置文件来实现Spring容器的实例化
- ApplicationContext cx= new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
方法二:在文件系统路径下寻找配置文件进行Spring容器的实例化
- ApplicationContext cx= new FileSystemXmlApplicationContext(new String[]{"D:\\applicationContext.xml"});
在实际的应用中建议使用第一种方式,在程序开发中比较灵活,与路径无关。同时,sping可以指定多个配置文件,由数组传入。
2、实例化bean的三种方式
方法一:使用类构造器实例化
- //接口
- package com.cvicse.service;
- public interface PersonService {
- public void save();
- }
- //实现类
- package com.cvicse.service.impl;
- import com.cvicse.service.PersonService;
- public class PersonServiceBean implements PersonService {
- public void save(){
- System.out.println("我是save()方法");
- }
- }
在applicationContext.xml的XML中配置如下:
- <bean id="personService" class="com.cvicse.service.impl.PersonServiceBean"></bean>
在应用类中调用
- ApplicationContext cx= new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
- PersonService personService = (PersonService)cx.getBean("personService");
- personService.save();
方法二:使用静态工厂方法实例化
在方法一的基础上添加一个静态工厂方法,专门实例化bean
- package com.cvicse.service.impl;
- public class PersonServiceBeanFactory {
- public static PersonServiceBean createPersonServiceBean(){
- return new PersonServiceBean();
- }
- }
在applicationContext.xml的XML中配置如下:
- <bean id="personService" class="com.cvicse.service.impl.PersonServiceBeanFactory"
- factory-method="createPersonServiceBean"/>
在应用类中调用
- ApplicationContext cx= new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
- PersonService personService = (PersonService)cx.getBean("personService");
- personService.save();
方法三:使用实例工厂方法实例化
在方法一的基础上添加一个工厂方法类,用于bean的实例化
- package com.cvicse.service.impl;
- public class PersonServiceBeanFactory {
- public PersonServiceBean createPersonServiceBean(){
- return new PersonServiceBean();
- }
- }
在applicationContext.xml的XML中配置如下:
- <bean id="personServiceFactory" class="com.cvicse.service.impl.PersonServiceBeanFactory"/>
- <bean id="personService" factory-bean="personServiceFactory" factory-method="createPersonServiceBean"/>
在应用类中调用
- ApplicationContext cx= new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
- PersonService personService = (PersonService)cx.getBean("personService");
- personService.save();
3、bean的作用域范围
(1) singleton:默认的情况下在容器启动只有一个bean的实例化对象,在容器实例化的时候初始化。如果添加了lazy-init=“true”则会延迟加载。
(2) prototype:每次调用都会初始化一个新的实例对象
- <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指定初始化方法和销毁方法
- <strong> <bean id="personService"
- class="cn.com.impl.PersonServiceBean"
- init-method="initMethod" destroy-method="destroyMethod"></bean></strong>
Spring学习 Ioc篇(一 )的更多相关文章
- Spring学习 Ioc篇(三)
1.在注解注入方式中,首先要在xml中引入如下的红线的命名空间: <?xml version="1.0" encoding="UTF-8" ?> & ...
- Spring学习 Ioc篇(二 )
5.spring依赖注入的方式 方法一:使用构造器方式进行注入 1.dao的类和接口 package com.cvicse.dao.impl; import com.cvicse.dao.Person ...
- 死磕Spring之IoC篇 - 文章导读
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
- 死磕Spring之IoC篇 - BeanDefinition 的加载阶段(XML 文件)
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
- 死磕Spring之IoC篇 - BeanDefinition 的解析阶段(XML 文件)
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
- 死磕Spring之IoC篇 - 解析自定义标签(XML 文件)
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
- 死磕Spring之IoC篇 - BeanDefinition 的解析过程(面向注解)
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
- 死磕Spring之IoC篇 - 开启 Bean 的加载
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
- 死磕Spring之IoC篇 - Bean 的创建过程
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
随机推荐
- Java 中的 request 和response 理解
request和response(请求和响应) 1.当Web容器收到客户端的发送过来http请求,会针对每一次请求,分别创建一个用于代表此次请求的HttpServletRequest对象(reque ...
- Maven引入本地jar包
<dependency> <groupId>${gorup}</groupId> <artifactId>${artifact}</artifac ...
- iOS开发拓展篇—封装音频文件播放工具类
iOS开发拓展篇—封装音频文件播放工具类 一.简单说明 1.关于音乐播放的简单说明 (1)音乐播放用到一个叫做AVAudioPlayer的类 (2)AVAudioPlayer常用方法 加载音乐文件 - ...
- bzoj 2809: [Apio2012]dispatching
#include<cstdio> #include<algorithm> #define M 1000005 using namespace std; long long an ...
- 实现用CSS切割图片的方法
切割图片这里不是真正的切割,只是用CSS取图片中的一部分而已.这样做的好处就是减少了打开网页时请求图片的次数.主要有两种方式,一是做为某一元素的背景图片,二是用img元素的属性. 方法一: 用CSS中 ...
- python leetcode 日记 --Contains Duplicate --217
题目 Given an array of integers, find if the array contains any duplicates. Your function should retur ...
- eclipse快捷键用不了
ctrl+shift+R是eclipse最常用的快捷键之一,用于打开资源,输入文件名或文件名中的前几个字母,就可以打开工作区中任意文件 今天在打开eclipse,使用该快捷键时,提示“该快捷方式所指向 ...
- fifo write
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types. ...
- OC之160728
NSData与NSMutableData:代表数据缓冲区有两个作用,将数据读入NSData和输出NSData数据 输出 将字符串写入指定文件 用NSFileManager:为创建,删除,移动,复制文件 ...
- javascript的异步编程方法
一,callback 回调函数 即函数f1和函数f2的关系是f1(f2()); f2作为f1()的回调函数,在f1执行过程中就开始执行f2,先执行线程的主要逻辑,将比较耗时的任务放在后面执行. 回调函 ...