【Java框架型项目从入门到装逼】第一节 - Spring框架 IOC的丧心病狂解说

时间:2022-04-03 14:34:50

大家好,好久不见,今天我们来一起学习一下关于Spring框架的IOC技术。

【Java框架型项目从入门到装逼】第一节 - Spring框架 IOC的丧心病狂解说

控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

【Java框架型项目从入门到装逼】第一节 - Spring框架 IOC的丧心病狂解说

好吧,那我们从简单的说起。直接讲概念有点抽象,让我们从一个实际的场景来分析这个事情。大毛想要找个女朋友,他的朋友二毛帮忙介绍了一个女生,叫翠花。然后大毛跟翠花认识了。相处了一段时间,因为翠花要大毛和他一起打王者荣耀,可是大毛只会打斗地主,所以分手了,为此大毛难过了好长一段时间。后来,大毛又去找二毛帮忙,希望重新找一个女朋友。大家看这个过程,其实很麻烦的,大毛如果通过熟人介绍的方式来找女朋友,必然是一个一个的接触,比如第一次他跟翠花相亲,第二次跟桂花相亲,第三次又跟西兰花相亲,每次都耗费大量的精力。

【Java框架型项目从入门到装逼】第一节 - Spring框架 IOC的丧心病狂解说

相亲吃饭得花钱吧,看电影得花钱吧,万一谈不来,分手还麻烦。这就是大毛跟他每一个女朋友的依赖性太强了。

现在,请大家进行一个想象,想象我们自己是天神,以我们自己的意志来给大毛安排一个女朋友。既然我们是天神,就可以给大毛编写一个人生的剧本。

【Java框架型项目从入门到装逼】第一节 - Spring框架 IOC的丧心病狂解说

之前大毛是通过二毛介绍,才认识了翠花,桂花,和西兰花。现在,我们通过代码的形式来重现一个这个过程。

【Java框架型项目从入门到装逼】第一节 - Spring框架 IOC的丧心病狂解说

剧本:

大毛:

package com.spring.bean;

public class DaMao {

	private GirlFriend girlFriend;

	public GirlFriend getGirlFriend() {
return girlFriend;
} public void setGirlFriend(GirlFriend girlFriend) {
this.girlFriend = girlFriend;
} }

女朋友作为一个超类:

package com.spring.bean;

/**
* 女朋友
* @author Administrator
*/
public class GirlFriend {
private String hobby; public String getHobby() {
return hobby;
} public void setHobby(String hobby) {
this.hobby = hobby;
} }

翠花继承自GirlFriend :

package com.spring.bean;

public class CuiHua extends GirlFriend{

}

测试类:

package com.spring.test;

import com.spring.bean.CuiHua;
import com.spring.bean.DaMao;
import com.spring.bean.GirlFriend; public class TestDaoMao { public static void main(String[] args) {
DaMao daMao = new DaMao(); GirlFriend cuihua = new CuiHua();
cuihua.setHobby("王者荣耀"); daMao.setGirlFriend(cuihua); //看一下大毛的女朋友喜欢做什么?
System.out.println(daMao.getGirlFriend().getHobby()); }
}

看完了这个例子,我们发现,虽然我们是天神,可是安排这样的剧本就要去不断地去new新的GirlFriend,这样是不是很麻烦?

实际我们天神的职责是掌管这个大毛的命运,在合适的时间,让大毛去谈一场恋爱就可以了,至于让谁充当大毛的女朋友,作为天神,我们不关心,对不对?

或者说,反正是我们决定,无所谓是谁。

所以,我们只需要安心编写大毛谈恋爱的剧本就行了,我们只需要知道大毛有一个女朋友就OK了,到底是谁,以后再说。因为,我们是在大毛出生之前就给他安排了剧本。那是不是我们永远都不给大毛指定一个女朋友呢?当然也不是,我们天神一般喜欢把那些可能会改变的东西写在 “神圣的草稿纸” 上,这个草稿纸就是XML文件。

接下来,让我们引入Spring的集成环境,来模拟这个事情!

【Java框架型项目从入门到装逼】第一节 - Spring框架 IOC的丧心病狂解说

首先,引入Spring需要的jar包。

【Java框架型项目从入门到装逼】第一节 - Spring框架 IOC的丧心病狂解说

第二步,写配置文件。

【Java框架型项目从入门到装逼】第一节 - Spring框架 IOC的丧心病狂解说

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="DaMao" class="com.spring.bean.DaMao">
<property name="girlFriend" ref="CuiHua"></property> </bean> <bean id="CuiHua" class="com.spring.bean.CuiHua">
<property name="hobby" value="王者荣耀"></property>
</bean> </beans>

然后,剧本就变成了这样:

package com.spring.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.spring.bean.DaMao; public class TestDaoMao2 { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("GirlFriends.xml");
DaMao daMao = (DaMao)context.getBean("DaMao"); //看一下大毛的女朋友喜欢做什么?
System.out.println(daMao.getGirlFriend().getHobby()); }
}

运行效果:

【Java框架型项目从入门到装逼】第一节 - Spring框架 IOC的丧心病狂解说

这样的好处显而易见,我们不需要在剧本(Java代码)里面指定谁是大毛的女朋友了,这些事情我们都写在“神圣的草稿纸”上。牛逼了我的哥。IOC的原理就是在不改变剧本的情况下,由作为“天神”的你来指定谁来出演,体现在一个XML文件上。而且这些配置都是可以更改的。剧本就是Java代码,能不改就不改。

【Java框架型项目从入门到装逼】第一节 - Spring框架 IOC的丧心病狂解说

作业:

新建一个Java项目SpringTest01 ,创建包 com.spring.bean。

需要创建的Java类:

Hero .java

属性:

Private String heroName;

Priate String type;

Private String description;

生成对应的get、set方法,再跟据你的喜好重写toString方法。

新建一个源文件夹etc,专门用于存放配置文件。编写英雄池的xml文件——heroPool.xml。

在配置中加入一个英雄的具体信息:鲁班七号、 射手、 嘻嘻,成功检测到对面的智商,看来我无法发挥全部实力了。

创建包com.spring.test,新建测试类TestHero,读取heroPool.xml,然后打印出鲁班七号的具体信息。

【Java框架型项目从入门到装逼】第一节 - Spring框架 IOC的丧心病狂解说的更多相关文章

  1. 【Java框架型项目从入门到装逼】第十二节 项目分层

    这一节我们开始对项目进行分层,一般来说,一个web项目的层次结构如下图所示: controller层为我们的控制层,用来接收用户的请求,比如新增一个学生的信息,新增的请求最先就是走到这一层.contr ...

  2. 【Java框架型项目从入门到装逼】第七节 - 学生管理系统项目搭建

    本次的教程是打算用Spring,SpringMVC以及传统的jdbc技术来制作一个简单的增删改查项目,对用户信息进行增删改查,就这么简单. 1.新建项目 首先,打开eclipse,新建一个web项目. ...

  3. 【Java框架型项目从入门到装逼】第五节 - 在Servlet中接收和返回数据

    在上一节的程序中,我们可以看到HttpServletRequest, HttpServletResponse这两个对象.可以说,这是JavaWeb中至关重要的两个对象.接下来,我们来做一个简短的说明: ...

  4. 【Java框架型项目从入门到装逼】第三节 - 如何用Tomcat发布web项目?

    啥叫Tomcat?有道词典是这么说的. 这个我们姑且不管,实际上呢,Tomcat是一种Web服务器,我们自己做好了一个Web项目,就可以通过Tomcat来发布.服务器呢,又分为硬件服务器和软件服务器. ...

  5. 【Java框架型项目从入门到装逼】第四节 - 编写第一个Servlet程序

    在开始这一节之前呢,我们还需要把Tomcat配置到Eclipse中,配置的方式很简单,打开Eclipse,Window,Preferences,进入到这个页面: 将Tomcat的安装目录配置到Ecli ...

  6. 【Java框架型项目从入门到装逼】第九节 - 数据库建表和CRUD操作

    1.新建学生表 这节课我们来把和数据库以及jdbc相关的内容完成,首先,进行数据库建表.数据库呢,我们采用MySQL数据库,我们可以通过navcat之类的管理工具来轻松建表. 首先,我们得建一个数据库 ...

  7. 【Java框架型项目从入门到装逼】第十四节 查询用户列表展现到页面

    这一节,我们来实现一下用户列表搜索,最终的效果如下: 这边我们要使用easyUI给我们提供的datagrid组件. HTML结构如下 <!-- 数据列表 --> <table id= ...

  8. 【Java框架型项目从入门到装逼】第八节 - 用EasyUI绘制主界面

    1.引入资源包 在上一节中,我们把基本的框架都搭好了,用了Spring,SPringMVC.这一节,我们先来画页面,前端框架采用EasyUI来实现. easyui是一种基于jQuery的用户界面插件集 ...

  9. 【Java框架型项目从入门到装逼】第十三节 用户新增功能完结篇

    这一节,我们把用户新增的功能继续做一个完善.首先,新增成功后,需要给前台返回一个信息,就是告诉浏览器,这次用户新增的操作到底是成功了呢,还是失败了呢?为此,我们需要专门引入一个结果类,里面只有两个属性 ...

随机推荐

  1. unicode 和 utf8

    关于 unicode utf8 文章来自于 http://blog.csdn.net/tge7618291/article/details/7599902 ascii 主要来表示英文.但是要全世界那么 ...

  2. 折线分割平面&lbrack;HDU2050&rsqb;

    折线分割平面 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  3. 2016年10月27日 星期四 --出埃及记 Exodus 19&colon;12

    2016年10月27日 星期四 --出埃及记 Exodus 19:12 Put limits for the people around the mountain and tell them, `Be ...

  4. hdu 5115 Dire Wolf

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5115 题目分类:区间dp 题意:有n只狼,每只狼有两种属性,一种攻击力一种附加值,我们没杀一只狼,那么 ...

  5. Python 图片转字符画

    Python 图片转字符画 一.课程介绍 1. 课程来源 原创 2. 内容简介 本课程讲述怎样使用 Python 将图片转为字符画 3. 前置课程 Python编程语言 Linux 基础入门(新版) ...

  6. git知识总结-1&period;git基础之git reference

    1.前言 Git版本管理的内容,是一系列由40bytes SHA-1字符串所代表patch,而Git References,则是对这些字符串的引用(也可以理解为别名).为什么需要别名呢?因为这些字符串 ...

  7. &period;Net进阶系列&lpar;10&rpar;-异步多线程综述(被替换)

    一. 综述 经过两个多个周的整理,异步多线程章节终于整理完成,如下图所示,主要从基本概念.委托的异步调用.Thread多线程.ThreadPool多线程.Task.Parallel并行计算.async ...

  8. Hadoop概念学习系列之搭建(windows)Eclipse&sol;MyEclipse远程操作(Linux上)hadoop2&period;2&period;0&sol;hadoop2&period;6&period;0 出错集(三十五)

    本博文,是在http://blog.csdn.net/u010911997/article/details/44099165  的基础上.感谢原博主! 问题1:在DFS Lcation 上不能多文件进 ...

  9. 常见dos命令汇总

    常用的内部命令有md.cd.rd.dir.path.copy.type.edit.ren.del.cls.ver.date.time.prompt.常用的外部命令有deltree.format.dis ...

  10. 个人整理的一些iOS Entitlements

    收集了不少Entitlement,当然也肯定有遗漏.有的就是key的字面意思,就不多做解释.不过有的虽然字面意思好理解,不过具体的用处不太清楚,就写的Unknown use.在替换entitlemen ...