SpringIOC学习二
Spring的IOC容器通过依赖注入DI(dependency injection)来实现程序之间的依赖关系,达到解耦的方式
依赖的方式:
a.基于xml文件配置的注入
* 构造函数注入
* setter方法注入
* 特定接口的注入(用的很少,省略)
a1:常见pojo类属性的注入
a2:bean的scope属性代表bean对象的作用域 scope = "singleton/prototype"
singleton : 单例,仅初始化一次,创建一个实例 A a = new A();
prototype : 每一次对bean的访问都重新创建一个实例 A a = new A(); A b = new A();
a3:bean的延迟加载
* 在bean标签里面写入lazy-init = "false" / lazy-init = "true"
* 也可以在beans的头文件里面写入 default-lazy-init="true" 代表整个配置文件的对象都是延迟加载
a4:spring可以自动的向bean中注入依赖 -- 自动装配(autowire)
自动装配的两种方式:
* byName 定义的依赖的bean名称需要与类中引用的名称一致,就会匹配依赖关系
* byType 通过定义的依赖bean的类型来匹配(默认autowire-candidate="true",有多个实现类的时候要设置其余的为false)
详见代码 autowire.*
总结:建议不要在配置文件里面用自动装配,虽然可以减少配置文件,但是不利于维护
配置文件的读取:
//第一种方式 ,单个配置文件的加载
/*ApplicationContext ac =
new ClassPathXmlApplicationContext("applicationContext.xml");
UserSetterService userSetterService =
(UserSetterService) ac.getBean("userSetterService");
System.out.println(userSetterService);*/
//第二种方式 多个文件文件的加载
/*ApplicationContext ac =
new ClassPathXmlApplicationContext("applicationContext.xml",
"applicationContext-property.xml",
"applicationContext-autowire.xml");*/
/*String[] configFiles = new String[]{"applicationContext.xml",
"applicationContext-property.xml",
"applicationContext-autowire.xml"};
ApplicationContext ac =
new ClassPathXmlApplicationContext(configFiles);*/
//第三种方式: 用约定的方式
/*ApplicationContext ac =
new ClassPathXmlApplicationContext("applicationContext*.xml");
*/
//第四种方式:读取一个总的配置文件 ,其他配置都被包含在这一个总得配置文件里面
/*ApplicationContext ac =
new ClassPathXmlApplicationContext("application-all.xml");
*/
//第五种方式:BeanFactory
ApplicationContext ac =
new FileSystemXmlApplicationContext("D:\\Eclipse_WorkSpace\\spring02-IOC-DI\\src\\applicationContext.xml");
UserSetterService userSetterService =
(UserSetterService) ac.getBean("userSetterService");
System.out.println(userSetterService);
SpringIOC学习二的更多相关文章
- emberjs学习二(ember-data和localstorage_adapter)
emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ...
- ReactJS入门学习二
ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...
- TweenMax动画库学习(二)
目录 TweenMax动画库学习(一) TweenMax动画库学习(二) TweenMax动画库学习(三) Tw ...
- Hbase深入学习(二) 安装hbase
Hbase深入学习(二) 安装hbase This guidedescribes setup of a standalone hbase instance that uses the local fi ...
- Struts2框架学习(二) Action
Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...
- Quartz学习--二 Hello Quartz! 和源码分析
Quartz学习--二 Hello Quartz! 和源码分析 三. Hello Quartz! 我会跟着 第一章 6.2 的图来 进行同步代码编写 简单入门示例: 创建一个新的java普通工程 ...
- SpringCloud学习(二):微服务入门实战项目搭建
一.开始使用Spring Cloud实战微服务 1.SpringCloud是什么? 云计算的解决方案?不是 SpringCloud是一个在SpringBoot的基础上构建的一个快速构建分布式系统的工具 ...
- DjangoRestFramework学习二之序列化组件、视图组件 serializer modelserializer
DjangoRestFramework学习二之序列化组件.视图组件 本节目录 一 序列化组件 二 视图组件 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 序列化组 ...
随机推荐
- 【Spring源码深度解析学习系列】核心类介绍(一)
一.DefaultListableBeanFactory 首先看一下结构 由图可知XmlBeanFactory继承自DefaultListableBeanFactory,而DefaultListabl ...
- Beta阶段报告
Beta版测试报告 1. 在测试过程中总共发现了多少Bug?每个类别的Bug分别为多少个? BUG名 修复的BUG 不能重现的BUG 非BUG 没能力修复的BUG 下个版本修复 url乱码 √ 手机端 ...
- 【Alpha 阶段】后期测试及补充(第十一、十二周)
[Alpha 阶段]动态成果展示 修复了一些bug后,关于游戏的一些动态图展示如下: 终极版需求规格说明书和代码规范 经过一些细微的图片和格式的调整,完成了本学期的最终版本: [markdown版说明 ...
- 用greenlet实现Python中的并发
from greenlet import greenlet def test1(): print 12 gr2.switch() print 34 def test2(): print 56 gr1. ...
- Flask 学习 九 用户资料
资料信息 app/models.py class User(UserMixin,db.Model): #...... name = db.Column(db.String(64)) location ...
- Linux 目录与文件管理
1. 目录与路径1.1 相对路径与绝对路径1.2 目录的相关操作: cd, pwd, mkdir, rmdir1.3 关于执行文件路径的变量: $PATH2. 档案与目录管理2.1 档案与目录的检视: ...
- jquery基础总结 -- 转载
jquery的each里面return的使用 在使用jquery的each方法时, return false相当于break,是跳出each循环,return true相当于continue,是继续循 ...
- 逆向集录_00_不同程序OEP特征总结
在分析/逆向 程序时,如果事先知道这类程序的一些特征,那将会是事半功倍的: 分析/逆向 程序,和写程序不同,比喻的话:写程序像在作案,分析/逆向 程序就像是在破案,对破案来讲,重在假想和推理: 特征1 ...
- thinkphp中的常见静态常亮
thinkphp __PUBLIC__的定义 __ROOT__等常量的定义 1 2 3 4 5 6 7 8 9 '__TMPL__' => APP_TMPL_PATH, // 项目 ...
- STM32读取温湿度传感器DHT11和DHT21(AM2301)系列问题
1.DHT11和DHT21传感器 这两种传感器都是奥松公司的产品,具体的传感器说明书在其官网上有(www.aosong.com). DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合 ...