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之登录那点事
随着互联网的高速发展,一个应用为了保护用户的隐私,通常会通过设置用户名+密码的验证方式保证用户隐私的相对安全,我知道一般网站的登录验证,通常会设置一个二维码,通过验证二维码,防止恶意软件通过机械程序, ...
-
JavaScript错误之:Uncaught ReferenceError: $ is not defined
在js开发中,很多人遇到类似问题,都找不到解决方法.Uncaught ReferenceError: $ is not defined,在这里给大家提供几个解决方法. 方法/步骤11.出现这个错误,最 ...
-
NOIP201307货车运输
2016.1.28 试题描述 A 国有n座城市,编号从1到n,城市之间有m条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有q辆货车在运输货物,司机们想知道每辆车在不超过车辆限重的情况下,最多 ...
-
重新想象 Windows 8.1 Store Apps (75) - 新增控件: Hub, Hyperlink
[源码下载] 重新想象 Windows 8.1 Store Apps (75) - 新增控件: Hub, Hyperlink 作者:webabcd 介绍重新想象 Windows 8.1 Store A ...
-
IFrame 根据嵌入页面自动调节大小
很多人估计会遇到这样的情况,在IFrame嵌入某些页面,总会出现滚动条,那么有没方法,可以让IFrame随着嵌入页面的内容大小自动调节大小而不出现滚动条呢?答案是肯定的,经过查找,本人发现用Ifram ...
-
boost之词法解析器spirit
摘要:解析器就是编译原理中的语言的词法分析器,可以按照文法规则提取字符或者单词.功能:接受扫描器的输入,并根据语法规则对输入流进行匹配,匹配成功后执行语义动作,进行输入数据的处理. C++ 程序员需要 ...
-
cocos2d-x 3.0 播放MP4视频
猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=545 很久以前写的一个2dx播放 ...
-
pip换源安装
pip install --index-url https://pypi.tuna.tsinghua.edu.cn/simple 要安装的 有些工具安装太慢, 换源安装一下, 速度一下子飞起
-
下拉框选择blur与click冲突问题
缘由:今天在做下拉框选择时,遇到click和blur冲突问题:具体现象如下 1.intput框获取焦点(focus事件)时显示隐藏的下拉框,失去焦点(blur事件)则隐藏下拉框 2.点击选择(clic ...
-
namenode做了ha后kylin出现错误No registered coprocessor service found for name CubeVisitService in region
错误如下: Caused by: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.excep ...