SpringIOC学习一
Spring是一个轻量级的控制反转(IOC)和面向切面(IOP)的容器框架
1.控制反转IOC(inversion of controller)
IOC是一种概念,是把我们程序中类与类之间的依赖关系交给容器去处理,一般有两种方式:
* 依赖查找DL(dependency lookup):程序根据查找方式,交给容器去查找
* 依赖注入DI(dependency injection):程序不提供查找方式,提供合适的构造方法或者setter方法,让容器进行注入来解决依赖关系,spring的控制反转就是通过依赖注入来实现的
2.什么叫依赖?
简单的说,一个类实现某个功能需要另外一个类的帮助来实现(模拟一个web登陆验证的功能),详见UserService.java
3.基于接口编程的开发方式
当一个方法有多个实现的情况下,我们一般是基于接口的方式进行编程,详见UserServiceForInterface.java
4.依赖注入
依赖注入DI是指一个对象需要另外一个对象的时候,无需在代码中创建被调用者,而是依赖于外部容器,由外部容器创建后传递给程序
依赖注入是目前位置最好的解耦方式,因为依赖关系是依靠配置文件的方式组织在一起,而不是在程序中的硬编码
5:Spring的IOC容器通过依赖注入来实现程序之间的依赖关系,达到解耦的作用
a : spring项目环境搭建需要的jar包
* spring-beans-4.2.1.RELEASE.jar
* spring-context-4.2.1.RELEASE.jar
* spring-core-4.2.1.RELEASE.jar
* spring-expression-4.2.1.RELEASE.jar
* commons-logging.jar
* hamcrest-core-1.3.jar
* junit-4.11.jar
* log4j-1.2.17.jar
b:配置文件 applicationContext.xml,加上bean约束
bean的约束在spring-framework-4.2.1.RELEASE\
docs\spring-framework-reference\html\xsd-configuration.html文件查看
6:在spring文件上面实现依赖注入的两种方式
1: 在配置文件定义我们的类
<!--相当于我们java代码的 UserService userService = new UserService() -->
<bean id= "userService"
class = "com.tz.spring.sysmanage.service.UserServiceForSpring"></bean>
<!--相当于我们java代码的 UserDao userDao = new UserDao() -->
<bean id = "userDao"
class = "com.tz.spring.sysmanage.dao.impl.UserDao"></bean>
<!--相当于我们java代码的 UserDaoOther userDaoOther = new UserDaoOther() -->
<bean id= "userDaoOther"
class= "com.tz.spring.sysmanage.dao.other.UserDaoOther"></bean>
2:描述依赖关系有两种方式
* 通过构造方法的方式注入:
a:被依赖的类必须有构造方法
b:在配置文件里面来描述依赖关系
<bean id= "userService" class = "com.tz.spring.sysmanage.service.UserServiceForSpring">
<constructor-arg ref="userDao"></constructor-arg>
<constructor-arg ref="userDaoOther"></constructor-arg>
</bean>
* 通过setter方法注入
a:被依赖的类里面生成依赖类的setter方法
b:在配置文件来描述依赖关系
<bean id= "userService"
class = "com.tz.spring.sysmanage.service.UserServiceForSpring">
<property name="userDao" ref="userDaoOther"></property>
</bean>
SpringIOC学习一的更多相关文章
- SpringIOC学习三
基于注解的注入:就是用注解标签的方式替换掉我们xml配置文件里面bean的注册和依赖关系的描述 a:首先回顾IOC(控制反转),进行依赖注入需要做到两件事情: 1:注册类 2:描 ...
- SpringIOC学习二
Spring的IOC容器通过依赖注入DI(dependency injection)来实现程序之间的依赖关系,达到解耦的方式依赖的方式:a.基于xml文件配置的注入 * 构造函数注入 * ...
- springIOC学习笔记
目录 目的 引用 xml方式 配置 配置实例 使用 底层简单模拟 全注解方式 基础 包扫描方式 配置 使用 config方式 配置 使用 spring整合junit 引用 示例 目的 让spring统 ...
- SpringIOC学习_属性注入(依赖注入)
一.应用场景:Spring会帮创建实现类的实例,但是有时候我们还需要在类中设置一些属性用于传入设置值,这些跟类紧密关联的属性就叫依赖,通过spring帮忙设置的过程叫依赖注入. 二.依赖注入的实现 A ...
- spring-Ioc学习笔记
spring 是面向Bean的编程 Ioc (Inversion of Control) 控制反转/依赖注入(DI:Dependency Injection) Aop(Aspect Oriented ...
- 【转】Spring学习---SpringIOC容器的初始化过程
[原文]https://www.toutiao.com/i6594400249429623304/ SpringIOC容器的初始化过程 简单来说,IoC容器的初始化是由refresh()方法来启动的, ...
- Spring技术内幕:SpringIOC原理学习总结
前一段时候我把Spring技术内幕的关于IOC原理一章看完,感觉代码太多,不好掌握,我特意又各方搜集了一些关于IOC原理的资料,特加深一下印象,以便真正掌握IOC的原理. IOC的思想是:Spring ...
- 【学习】006数据交换格式与SpringIOC底层实现
课程目标 XML和JSON Java反射机制 手写SpringIOC 什么是数据交换格式 客户端与服务器常用数据交换格式xml.json.html 数据交换格式用场景 移动端(安卓.IOS)通讯方式采 ...
- Spring学习总结四——SpringIOC容器四
一:spring容器给bean对象注入属性值 1:注入基本属性值 a. 创建MessageBean类: /** * */ package com.hlcui.dao; /** * @author Ad ...
随机推荐
- php设计模式七 ---组合模式
1.介绍 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结 ...
- Android中Activity和Service的数据通讯
在Android中,我们通常需要Activity跟Service进行通讯,很多人只知道Activity掉用Service,却不知道Service如何将数据返回给Activity.其实Service返回 ...
- JavaScript之隐式类型转换
布尔操作符(!.&&.||) 当使用 条件判断语句(if...else) 以及 布尔操作符(!.&&.||) 时,会调用Boolean()进行隐式类型转换 转换为fal ...
- 【福大软工】 W班级总成绩排名3
评分链接: alpha测试 软件产品案例分析 总分排名: 团队千帆竞发图 总结: 本次排名是alpha测试 软件产品案例分析 两次排名的汇总. 1.alpha测试小组评价: 听说:10篇冲 ...
- alpha冲刺第八天
一.合照 二.项目燃尽图 三.项目进展 首页文章显示部分 首页小功能福大地图完成 四.明日规划 发现爬取的数据是一整个网页的内容,而我们需要的仅仅是教务处通知的文章,在筛选方面还需要改进,查找如何进行 ...
- Java暑期作业
一.假期观影笔记--<熔炉> 影片<熔炉>是根据发生在韩国光州聋哑学校里的真实事件而改编.影片讲述的是在一所聋哑儿童学校里,校长.教务以及老师披着慈善的华丽外衣对学校中的多名未 ...
- bzoj千题计划214:bzoj3589: 动态树
http://www.lydsy.com/JudgeOnline/problem.php?id=3589 树链剖分 用线段数维护扫描线的方式来写,标记只打不下传 #include<cstdio& ...
- 【TensorFlow随笔】关于一个矩阵与多个矩阵相乘的问题
问题描述: Specifically, I want to do matmul(A,B) where 'A' has shape (m,n) 'B' has shape (k,n,p) and t ...
- 使用JDBC中的出现的乱码和查询无结果问题
使用JDBC中的问题 连接的后出现查询结果是乱码. 1.可能是代码的编码与数据库的编码不同 有可以将二者都设置为UTF-8 2.如果比较懒得话可以只设代码为UTF-8 mysql 连接url中us ...
- New UWP Community Toolkit - DeveloperTools
概述 UWP Community Toolkit 中有一个开发者工具集 DeveloperTools,可以帮助开发者在开发过程中进行 UI 和功能的调试,本篇我们结合代码详细讲解 Develope ...