暑假spring学习总结之初遇IoC

在暑假前就给自己一个小目标:要在暑假时候好好丰富自己的知识结构,在网上找到了好多,mybatis、spring相关学习资源后,终于开始了最难熬但也最充实的学习过程。mybatis最开始学,而且也容易上手,需要导入的jar包也仅仅那一个就够了,所以关于mabatis的总结先放一下,今天闲来聊聊最近十天学习的Spring框架。

 

        言归正传。

Spring,百度百科是这么描述的:Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架.很有趣的是这个full-stack, 刚开始我很不理解,现在回过头来,其实也就那么回事,意思是说 “我,Spring,是一个很牛逼的家伙,你们这些小伙子都得听我的!”  这些”小伙子” 就可以理解成是指其他的一些框架吧,例如持久层框架,WEB层框架这些。Spring有着几个他最为显著的特性,就是 控制反转(IoC)以及面向切面(AOP),这两个是Spring这个大哥的命根子,而Spring之所以能够让其他的“小伙子”听他的也是因为他将IoC以及AoP融合得太完美。

---------------------------------------------------------------------------------------------------------------------------------------------------------


所谓控制反转IoC,网上看了好多详解,但觉得有点官方,我是这么理解的:不要抠字眼,看着这四个汉字真的很难理解,尤其是“反转”两个字,我只知道电影的大反转是什么意思,在这里我真的是一脸懵逼,所以不要理中文,看IoC。这么说吧,因为公司做项目的时候基本都是按照三层架构来的,这样的做的好处我不多说,你只需要知道这样可以分工合作,后端负责后端,前端负责前端。而后端一般也是多个人一起完成的,于是这就会涉及到调用,比如这样子:

/*
 * Dao层,有一个insert方法
 */
public class Dao {
	public void insert(){
		System.out.println("插入一条记录");
	}


/*
 * Service层,需要调用dao层方法
 */
public class Service {
	Dao dao;
	public void doService(){
		dao = new Dao();
		dao.insert();
	}

好像这么调用也没什么啊,有必要单独拿出来个框架管理吗? 有!非常有!平时自己一个人练习的时候当然可以这样。但我们所说的SpringIoC是针对项目而言的,也就是说你负责上面的Service层的代码时还这么用new的方法去调用的话就会显得耦合度极高,这会扯什么问题呢?写代码前不好分析,写代码时不好调用,写代码后不好维护!总而言之就是“万恶之源”,因而Spring这个大哥看不下去了,他会这样说:“愚蠢的家伙,看你们这么累我都累了,让我来吧,你Dao层只管写你的就好,而你Service要调用Dao层方法的话就先声明下dao的引用 顺便把setter方法设置好就行,其他的我来!”Spring的意思大概就是这样:

/*
 * Service层,需要调用dao层方法
 */
public class Service {
	Dao dao;
	public void setDao(Dao dao){
		this.dao = dao;
	}
	public void doService(){
		dao.insert();
	}
}

看吧,现在service与dao层就没有耦合了,而那个new Dao(); 的过程哪里去了啊?当然是交给Spring大哥去啦,至于他怎么创建的会在下面介绍到。其实这个就是控制反转IoC了:不用我们去控制对象的创建,而是交给Spring,这就是反转。而Spring创建dao层对象不叫创建,而是叫注入。比如在这里,就是通过settet方法注入,事实上还有构造注入,但一般用setter方法注入比较多,构造注入就不多说了。

好,下面来看Spring是如何将Dao层对象注入给service的:

在配置文件applicationContext.xml先要注册Dao以及Service,再将Dao注入给了Service。(注册是为了交给Spring管理)

<!-- 注册Dao -->
 <bean id="myDao" class="com.czp.ioc.Dao"/>

<!-- 注册Service -->
 <bean id ="myService" class="com.czp.ioc.Service">
 	<property name="dao"  ref="myDao"></property>
 </bean>

注意Service的property标签的属性 用的不是 value而是ref,这样才能将上面注册的myDao注入进来。






































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值