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 一 序列化组 ...
随机推荐
- 借鉴别人的Oracle 11g安装和卸载图文教程
Oracle 11g安装 1.解压下载的包,然后进入包内,点击setup.exe开始安装 . 2.出现如下:一般把那个小对勾取消,点击下一步进行, 弹出下图这个后点‘是' 3.下图后,选择创建和配置数 ...
- 关于Linux中文件,链接的一些思考
在Unix系统中,操作系统为磁盘上的文本与图像,鼠标键盘操作,网络交互等IO操作设计了一组通用API. 使他们被处理的时候可统一用字节流的方式.所以说,除了进程之外,其他的一切均可看做文件. Linu ...
- 常用排序算法的Java实现与分析
由于需要分析算法的最好时间复杂度和最坏时间复杂度,因此这篇文章中写的排序都是从小到大的升序排序. 带排序的数组为arr,arr的长度为N.时间复杂度使用TC表示,额外空间复杂度使用SC表示. 好多代码 ...
- C#委托的使用及案例
C#委托 1.委托就是把方法当做方法的参数来传递, 做自己不想做的事,是存有对某个方法的引用的一种引用类型变量.引用可在运行时被改变. 所有的委托都派生自System.Delegate类 委托的声明 ...
- pip安装selenium报错:Read timed out
今天打算把selenium降级重新安装,发现安装时总是失败,报如下错误: raise ReadTimeoutError(self._pool, None, 'Read timed out.') pip ...
- Beta Scrum Day 5
听说
- 多线程socket UDP收发数据
多线程socket收发数据 from threading import Thread from socket import * def sendData(): while True: sendInfo ...
- IntelliJ IDEA插件——冷门神器分享
IntelliJ IDEA就不必介绍了,至今还能保持IDE前三的神器,如今java程序员的首选,今天介绍几款冷门但绝对是神器的IDEA插件. 前言 IDEA自不必说,IDEA插件是开发中必备的神器,相 ...
- linux 下 nc 命令的使用
netcat被誉为网络安全界的'瑞士军刀',一个简单而有用的工具,透过使用TCP或UDP协议的网络连接去读写数据.它被设计成一个稳定的后门工具,能够直接由其它程序和脚本轻松驱动.同时,它也是一个功能强 ...
- 成功案例分享:raid5两块硬盘掉线数据丢失恢复方法
1. 故障描述 本案例是HP P2000的存储vmware exsi虚拟化平台,由RAID-5由10块lT硬盘组成,其中6号盘是热备盘,由于故障导致RAID-5磁盘阵列的两块盘掉线,表现为两块硬 ...