spring学习:概述及IOC理论推导

技术spring学习:概述及IOC理论推导 spring学习:概述及IOC理论推导新建一个空白的maven项目
2 .1.1、分析实现
我们先用我们原来的方式写一段代码 .
1、先写一个UserDao接

春季学习:概述与国际奥委会理论推导

创建一个新的空白maven项目

2 .1.1、分析实现

让我们先用原来的方式写一段代码。

1.首先编写一个UserDao接口。

公共接口UserDao { public void GetUser();}

2.再写道的实现类。

类userdao实现user Dao { @ override public void getuser(){ system . out . println(‘ get user data ‘);} }

3.然后编写UserService的接口。

公共接口user service { public void GetUser();}

4.最后,编写服务的实现类。

公共类UserServiceImpl实现了用户服务{

private UserDao UserDao=new UserDaoImpl();

@ Override public void getUser(){ userdao . getUser();} }

5.测试(这里,每次你改变不同的接口,你需要在服务层改变新的接口)

@测试

public void test(){ 0

user service service=new UserServiceImpl();

service . GetUser();

}

这是我们最初的方式,大家一开始都是这么写的,对吧?那我们现在就修改吧。

向Userdao的实现类添加一个。

公共类UserDaoMySqlImpl实现了UserDao {

@覆盖

public void GetUser(){ 0

System.out.println(‘MySql获取用户数据’);

}

}

接下来,如果我们想使用MySql,我们需要在服务实现类中修改相应的实现。

公共类UserServiceImpl实现了用户服务{

private UserDao UserDao=new UserDaoMySQL impl();

@覆盖

public void GetUser(){ 0

userdao . GetUser();

}

}

假设我们添加了Userdao的另一个实现类。

公共类UserDaoOracleImpl实现了UserDao {

@覆盖

public void GetUser(){ 0

System.out.println(‘Oracle获取用户数据’);

}

}

然后,如果我们想使用Oracle,我们需要在服务实现类中修改相应的实现。假设我们的需求很大,这个方法根本不适用,甚至是反人类的,对吧?每次修改,都需要修改很多代码。这种设计的耦合性太高,会影响全身。

那我们如何去解决呢

我们可以在我们需要的地方留下一个接口,而不是实现它,并在代码中使用set来修改它。

公共类UserServiceImpl实现了用户服务{

私有用户道用户道;

//由集合实现

public void setuserdo(userdo userdo){ 0

this.userDao=userDao

}

@覆盖

public void GetUser(){ 0

userdao . GetUser();

}

}

现在去我们的测试班测试;(使用set方法,用户可以在调用时选择要调用的接口。)

@测试

public void test(){ 0

UserServiceImpl服务=new UserServiceImpl();

service . setuserdo(new UserDaoMySqlImpl());

service . GetUser();

//那我们现在要用Oracle来实现吗?

service . setuserdo(new UserDaoOracleImpl());

service . GetUser();

}

不可能每个人都发现区别。很多人说没有区别。但是学生,他们已经发生了根本性的变化,很多地方都不一样了。仔细想想,以前所有东西都是由程序去进行控制创建,而现在是由我们自行控制创建对象 , 把主动权交给了调用者.这个项目不在乎如何创建或实施它。它只提供了一个接口。

这个想法从本质上解决了这个问题。我们程序员不再管理对象的创建,而是更加关注业务的实现。耦合大大降低。这就是国际奥委会的雏形!

2.1.2IOC本质

控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法,有人认为DI只是国际奥委会的另一个词。在没有IoC的程序中,我们使用面向对象的编程,对象的创建和对象之间的依赖关系在程序中是完全硬编码的。对象的创建由程序本身控制。在控制反转之后,对象的创建被转移到第三方。个人认为,所谓的控制反转,就是获取从属对象的方式反转。

IoC是Spring框架的核心内容,IoC在很多方面都得到了完美的实现,可以通过XML或者注释进行配置,新版Spring也可以实现零配置的IoC。

Spring容器初始化时,首先读取配置文件,根据配置文件或元数据创建和组织对象并存储在容器中,然后在程序使用时从Ioc容器中取出所需的对象。

当Bean由XML配置时,Bean的定义信息与实现是分离的,但是可以通过注释进行集成。Bean的定义信息以注释的形式直接在实现类中定义,从而达到零配置的目的。

控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是IoC容器,其实现方法是依赖注入(Dependency Injection,DI)。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/146469.html

(0)

相关推荐

  • css3变形效果好吗(css3中2d变形类型有哪些)

    技术CSS3变形技术有哪些本篇内容介绍了“CSS3变形技术有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    攻略 2021年12月15日
  • 通勤是什么意思,中国移动通勤流量包什么意思

    技术通勤是什么意思,中国移动通勤流量包什么意思通勤流量就是在上下班通勤时间的指定流量,以郑州移动9.99元通勤流量包为例,10G通勤流量包包含10G国内流量,流量有效期为订购当月每天6:00-9:00,17:00-20:

    生活 2021年11月1日
  • 馒头冷冻能保存多久,馒头一般保存多久还可以吃

    技术馒头冷冻能保存多久,馒头一般保存多久还可以吃你好!我是美食领域创作者娜小厨 ,很高兴可以为你解答问题馒头冷冻能保存多久。馒头属于发面类面食,内部结构宣软蓬松 气孔较多 。特别容易滋生细菌 。尤其是黄曲霉菌 。曲霉特别

    生活 2021年10月22日
  • 一语成,历史上有哪些一语成谶的事

    技术一语成,历史上有哪些一语成谶的事隶属于昆明陆军总司令部的第四方面军组建于1945年3月5日一语成,仅仅一个多月后,方面军司令官王耀武就指挥所部在湘西大破日寇,一举取得雪峰山大捷,8月在芷江出席日军投降的草签仪式,不久

    生活 2021年10月30日
  • 瘦小腿的最快方法,如何快速瘦大腿,瘦小腿

    技术瘦小腿的最快方法,如何快速瘦大腿,瘦小腿瘦腿法第一招瘦小腿的最快方法:平时尽量多走楼梯,并在上楼梯的时候抬起脚跟,以腿部承担体重。由于加大了腿部的负担,可以提高大腿周围脂肪的燃烧速率,消除大腿内侧和臀部的赘肉。专家表

    生活 2021年10月23日
  • 怎么解决php验证码不变的问题

    技术怎么解决php验证码不变的问题这篇文章主要介绍“怎么解决php验证码不变的问题”,在日常操作中,相信很多人在怎么解决php验证码不变的问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”

    攻略 2021年10月25日