JavaEE简单示例——Spring的控制反转
创始人
2024-05-31 07:19:42
0

简单介绍:

在之前的入门程序中,我们简单的介绍了关于Spring框架中的控制反转的概念,这次我们就来详细的介绍和体验一下Spring中的控制反转的理论和实操。

使用方法:

控制反转(IoC)是面向对象编程中的一个设计原则,用于降低代码之间的耦合度。

在传统的面向对象编程中,获取对象的方式使用关键字”new“主动创建一个对象,也就是说,应用程序掌握着对象的控制权。在使用Spring框架之后,对象的实例不再由调用者创建,而是由Spring的IoC容器来创建,IoC容器会负责控制程序之前的关系,而不是由调用者的成都代码直接控制。

IoC设计原则是借助于IoC容器实现具有依赖关系对象之间的解耦,各个对象封装之后,通过IoC容器来关联这些对象类。这样对象类与对象类之间就通过IoC容器进行联系,而对象类与对象类之间没有什么直接联系。

引用程序引入IoC容器之后,在客户端类中将不再创建对象类,而是直接从IoC容器中获取所需的对象类中。

这句话就是IoC的和核心思想,说白了,就是将我们之前通过new关键字创建对象的过程,替换成使用IoC容器中的getBean()方法来获取我们所需要的对象。

代码实现:

我们再复习一下之前我们的Spring的入门程序中的操作步骤:

1.首先在pom文件中引入Spring的Maven坐标


4.0.0org.exampleSpringDemo1.0-SNAPSHOT88UTF-8org.springframeworkspring-context5.2.21.RELEASEjunitjunit4.13.1test

2.创建Java对象类

package com.spring;public class user {private int id;private String name;public void show(){System.out.println("你好"+name);}@Overridepublic String toString() {return "user{" +"id=" + id +", name='" + name + '\'' +'}';}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public user(int id, String name) {this.id = id;this.name = name;}public user() {}
}

3.编辑Bena管理XML配置文件


4.编写测试类进行测试

import com.spring.user;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestUser {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("userBeanContext.xml");user u = (user) context.getBean("user");System.out.println(u.toString());}
}

这些是创建一个入门程序的大致步骤,然后接下来,如果上一个案例中我们成功的运行出结果,那么现在我们可以继续使用这个案例文件,我们来看一下运行结果:

就是输出user类的信息这个简单的案例。我们要体会的有两个部分,首先就是我们的创建对象部分,我们并没有出现 user u = new user()的语句,也就是说我们没有出现new user()的过程,而是通过IoC的容器中获取到了user对象,其中,ClassPathXmlApplicationContext()就是我们所说的Ioc容器,getBean()方法就是我们所有的由IoC容器来获取对象类,也就是用getBean()方法去代替我们的new关键字。

IoC的另一个作用:我们并不关心类的依赖关系,我们只需要知道我们应该获取那个对象即可

关于Bean的依赖关系属于是管理和维护Bean的方面,而IoC在Bean的管理方面的理念是,对于我们来说,我们并不需要关心Bean是如何来的,以及类的依赖关系,而是侧重于我们只需要知道我们需要获取的对象即可。那么我们也会以代码的形式来将理论融入到实践中

我们现在添加一个新的类,起名叫做student:

package com.spring;public class student {private int id;private String name;@Overridepublic String toString() {return "com.spring.student{" +"id=" + id +", name='" + name + '\'' +'}';}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public student(int id, String name) {this.id = id;this.name = name;}public student() {}
}

我们让user类去依赖这个类,所谓的依赖关系,就是user类中有一个属性是student类。

当我们创建user类的时候,我们会需要先创建student类,这就是类的依赖关系。在之前的传统的开发中,遇到一个类需要依赖另一个类的时候,我们需要先创建另一个类,之后才能创建需要的类,但是在Spring框架中,IoC会帮我们完成这种依赖关系,具体的配置文件如下: 

第一个红色框是我们被依赖的类,也就是student类,而在user类中,我们创建一个新的属性,它的类型就是student,然后我们使用一个特殊的属性ref,这个属性的全称叫做reference(引用),这个属性是用来给引用数据类型赋值的,这个属性的值指向我们创建被依赖的类的标签的id的值,对应到我们的案例中也就是创建student的标签的id的值,之后我们继续在测试类中执行我们之前的代码即可

运行结果:

可以看到,我们只是得到了user类,但是我们输出的时候依然得到了student类的数据,也就是说它其实隐藏了一个创建student并且赋值给user类的过程并没有让我们看见,或者说并不需要我们去关心,这就是IoC帮我们自动维护了类之间的依赖关系,我们只需要明确我们需要那个对象并从IoC容器中获取即可。 

注意点:

注意,虽然我们不需要关心student类的创建和赋值的过程,但是我们依然需要一个标签去指向student的类,并且在user类中使用ref属性指向student的的id,这样才能让Spring知道这两个类是一个依赖的关系

相关内容

热门资讯

洛阳“龙门石窟”游记作文 洛阳“龙门石窟”游记作文  在日常学习、工作抑或是生活中,大家对作文都不陌生吧,借助作文人们可以实现...
掌声的作文 掌声的作文(10篇)  在平凡的学习、工作、生活中,大家都尝试过写作文吧,借助作文人们可以反映客观事...
写字之星作文 写字之星作文  我们班有一个“写字之星”—孔奕如!她的“雄伟事迹”已经很多了,准确来说是多的数不清!...
跳长绳优秀作文 跳长绳优秀作文(通用10篇)  在日常学习、工作或生活中,大家都写过作文,肯定对各类作文都很熟悉吧,...
我当按摩师作文 我当按摩师作文XX年03月13日 星期日晚上,我刚作完作业,就发现妈妈坐在床上一直用手揉着后背,我瞧...
春天的味道作文 春天的味道作文通用15篇  在现实生活或工作学习中,大家总少不了接触作文吧,作文要求篇章结构完整,一...
清响作文600字 清响作文600字  在我们平凡的日常里,大家总少不了接触作文吧,作文根据体裁的不同可以分为记叙文、说...
傅雷家书好词好句摘抄 傅雷家书好词好句摘抄  在现实社会中,大家肯定对各类好词好句都很熟悉吧,好词好句的积累对于写作文时可...
勇气作文 关于勇气作文(精选40篇)  在学习、工作、生活中,大家都写过作文,肯定对各类作文都很熟悉吧,根据写...
描写昆虫的优美段落 描写昆虫的优美段落  昆虫王国里有趣的昆虫多得数不清,凭我们现在对昆虫的认识还是肤浅的,我们还需要探...
人无完人作文500字 人无完人作文500字  “人无完人”这个成语用在我身上,那是最好不过的了。老师要求我们遵守的十三条良...
初三语文辅导作文600字 初三语文辅导作文600字  在日常生活或是工作学习中,大家最不陌生的就是作文了吧,写作文可以锻炼我们...
写景优美作文摘抄好句好段 写景优美作文摘抄好句好段大全  大家都写过作文,肯定对各类作文都很熟悉吧,尤其是充满意境的写景作文,...
成长类的作文 成长类的作文(精选5篇)  在日常学习、工作抑或是生活中,大家对作文都再熟悉不过了吧,借助作文可以提...
柳作文 柳作文  在平日的学习、工作和生活里,大家都有写作文的经历,对作文很是熟悉吧,借助作文人们可以实现文...
洗菜作文400字 洗菜作文400字四篇  在日常学习、工作或生活中,大家都有写作文的经历,对作文很是熟悉吧,写作文是培...
那一次我真什么的作文400字 那一次我真什么的作文400字(精选72篇)  在日常学习、工作和生活中,大家都不可避免地会接触到作文...
心存美好作文800字 心存美好作文800字(精选25篇)  在平平淡淡的学习、工作、生活中,许多人都写过作文吧,借助作文人...
我的新老师作文800字 我的新老师作文800字第1篇我的新老师作文800字  在2015年的秋季,我便正式成为了马关县民族中...
作文 人生若只如初见 作文 人生若只如初见  人生若只如初见,所有往事都化为江南的一场烟雨,在相视一笑中,随风荡漾起回忆的...