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 一 序列化组 ...
随机推荐
- Android开发之漫漫长途 XVI——ListView与RecyclerView项目实战
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
- C语言的第二次作业
一.PTA实验作业 题目1. 计算分段函数 本题目要求计算下列分段函数f(x)的值: 1.本题代码 #include<stdio.h> #include<math.h> int ...
- Software Engineering-HW1
title: Software Engineering-HW1 date: 2017-09-13 15:41:13 tags: HW --- 阅读随笔 在<徐宥:掉进读书的兔子洞>里面, ...
- 201621123060《JAVA程序设计》第十四周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结与数据库相关内容. 2. 使用数据库技术改造你的系统 2.1 简述如何使用数据库技术改造你的系统.要建立什么表?截图你的表设计. 用 ...
- 敏捷开发每日报告--day4
1 团队介绍 团队组成: PM:齐爽爽(258) 小组成员:马帅(248),何健(267),蔡凯峰(285) Git链接:https://github.com/WHUSE2017/C-team 2 ...
- Beta冲刺 第一天
Beta冲刺 第一天 1. 昨天的困难 由于今天还是第一天,所以暂时没有昨天的困难. 2. 今天解决的进度 潘伟靖: 对代码进行了review 1.将某些硬编码改为软编码 2.合并了一些方法,简化代码 ...
- 浅谈CPU三级缓存和缓存命中率
CPU: CPU缓存(Cache Memory)是位于CPU与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存要快得多.缓存的出现主要是 为了解决CPU运算速度与内存读写速度不匹配的矛盾 ...
- 织梦dedecms默认网站地图sitemap.html优化
网站地图对于网站优化很重要,搜索引擎就是靠网站地图去收录网站页面,本文主要讲解优化织梦自带的网站地图功能. 织梦自带的网站地图使用方法:织梦后台--生成--HTML更新--更新网站地图,可以在 ...
- CentOS搭建Git服务器及权限管理
声明:本教程,仅作为配置的记录,细节不展开,需要您有一点linux的命令基础,仅作为配置参考. 1. 系统环境 系统: Linux:CentOS 7.2 64位 由于CentOS已经内置了OpenSS ...
- eclipse版本对应的jdk版本
Installing Eclipse is relatively easy, but does involve a few steps and software from at least two d ...