Java开发中SSM框架整合开发之 Spring IoC

2022-12-08 0 224

Spring IoC的基本基本原理

掌控探底回升(Inversion of Control,IoC)是两个比较抽象化的基本原理,是Spring架构的核心理念,用以消解电脑程式的谐振问题。倚赖转化成(Dependency Injection,DI)是IoC的另外一类讲法,只是从不同的视角,叙述完全相同的基本原理。

比如说他们想吃奶油了:他们以前根本无法是须要他们去买番茄酱他们做出来吃。但现在都有店面或者实体店了,完全能把他们想的口味告诉商家,让商家来制做。这时,他们他们并没有DIY奶油,而要由商家制做,但那个奶油合乎他们的菜色。那个范例非常生动活泼的传授了掌控探底回升的价值观,即把制做奶油的主导权交予商家。

当某一Java第一类(初始化者,比如说您)须要初始化另两个Java第一类(被分配器,即被倚赖第一类,比如说奶油)时,在现代程式结构设计商业模式下,分配器一般来说会采用“new 被分配器”的标识符形式来建立第一类(比如说您他们制做奶油)。此种形式会增加分配器与被分配器间的谐振性,有利于中后期标识符的升级换代与保护。

当Spring架构出现后,第一类的示例无须由分配器来建立,而要由Spring罐子(比如说奶油店)来建立。Spring罐子会负责管理掌控程序间的亲密关系(比如说奶油店负责管理掌控您与奶油的亲密关系),而不是由分配器的程序标识符直接掌控。这样,掌控权由分配器迁移到Spring罐子,掌控权发生了探底回升,这是Spring的掌控探底回升。

从Spring罐子视角来看,Spring罐子负责管理将被倚赖第一类表达式给分配器的核心成员表达式,相等于为分配器转化成它所倚赖的示例,这是Spring的倚赖转化成。

在Spring中同时实现掌控探底回升的是IoC罐子,其同时实现方法是倚赖转化成。

如果大家不太认知,还能看一看此种说明:

IOC(掌控探底回升):全称作:Inverse of Control。从字面认知是掌控探底回升了,将对在另一方面第一类中的两个内建第一类的掌控探底回升,探底回升后无须由他们这类的第一类展开掌控那个内建第一类的建立,而要由服务器端系统去掌控那个内建第一类的建立。DI(倚赖转化成):全称作Dependency Injection,原意另一方面第一类中的内建第一类是通过转化成的形式展开建立。那么IOC和DI这二者又是什么亲密关系呢?IOC是一类软件合作开发价值观,DI是此种软件合作开发价值观的两个同时实现。而Spring中的核心理念监督机制是DI。

Spring IoC罐子

Spring IoC罐子的结构设计主要是如前所述BeanFactory和ApplicationContext两个USB。

1. BeanFactory

BeanFactory提供了完整的IOC服务支持,是两个管理Bean的工厂,主要负责管理初始化各种Bean。(Bean相关知识将在下一章讲述)

建立BeanFactory示例时,须要提供XML文件的绝对路径。例如,能将第一章ch1应用中main方法的标识符修改如下:

//初始化Spring罐子,加载配置文件BeanFactory beanFac = new XmlBeanFactory(new FileSystemResource(“D:\\eclips(“test”); tt.sayHello();

使用BeanFactory示例加载Spring配置文件在实际合作开发中不多见,他们了解即可。

2. ApplicationContext

ApplicationContext是BeanFactory的子USB,也称作应用上下文,它除了包含BeanFactory的所有功能以外,还添加了对国际化、资源化、事件传播等内容的支持。

建立ApplicationContextUSB示例一般来说有三种方法:

1.通过ClassPathXmlApplicationContext建立

ClassPathXmlApplicationContext将从类路径classPath目录(src根目录)寻找指定的XML配置文件,例如:

ApplicationContext appCon = new ClassPathXmlApplicationContext(“applicationContext.xml”);

2.通过FileSystemXmlApplicationContext建立

FileSystemXmlApplicationContext将从指定文件的绝对路径中寻找XML配置文件(不常用),找到并装载完成ApplicationContext的示例化工作。例如:

ApplicationContext appCon = new FileSystemXmlApplicationContext(“D:\\eclipse-workspace\\ch1\\src\\applicationContext.xml”);

3.通过Web服务器示例化ApplicationContext罐子

Web服务器示例化ApplicationContext罐子时,一般使用如前所述org.springframework.web.context.ContextLoaderListener的同时实现形式(须要将spring-web-5.0.2.RELEASE.jar复制到WEB-INF/lib目录中),此方法只需在web.xml中添加如下标识符:

contextConfigLocation classpath:applicationContext.xml org.springframework.web.context.ContextLoaderListener

倚赖转化成的类型

在Spring中同时实现IoC罐子的方法是倚赖转化成,倚赖转化成的作用是在使用Spring架构建立第一类时,动态地将其所倚赖的第一类(如属性值)转化成Bean组件中。Spring架构的倚赖转化成一般来说有两种同时实现形式:一类是构造方法转化成,另一类是属性setter方法注入。

1.构造方法转化成

Spring架构能采用Java的反射监督机制,通过构造方法完成倚赖转化成。

Java开发中SSM框架整合开发之 Spring IoC

在ch2应用中,建立dao包,并在该包中建立TestDIDaoUSB和USB同时实现类TestDIDaoImpl。建立dao的目的是在service中使用构造方法倚赖转化成TestDIDaoUSB第一类。

package dao;import org.springframework.stereotype.Service;@Servicepublic class TestDIDaoImpl implements TestDIDao{@Override public void sayHello(){ System.out.println(“TestDIDao say: Hello, Study hard!”);}}

package dao;public interface TestDIDao { public void sayHello();}

在ch2应用中,建立service包,并在该包中建立TestDIServiceUSB和USB同时实现类TestDIServiceImpl。在TestDIServiceImpl中使用构造方法倚赖转化成TestDIDaoUSB第一类。

package service;import dao.TestDIDao;public class TestDIServiceImpl implements TestDIService{ private TestDIDao testDIDao;//构造方法,用于同时实现倚赖转化成 public TestDIServiceImpl(TestDIDao testDIDao){ super(); this.testDIDao = testDIDao;} @Override public void sayHello(){ //初始化testDIDao中的sayHello方法 testDIDao.sayHello(); System.out.println(“TestDIService 构造方法转化成 say: Hello, Study hard!”);}}

在src根目录下,建立Spring配置文件applicationContext.xml。在配置文件中,首先,将dao.TestDIDaoImpl类托管给Spring,让Spring建立其第一类。其次,将service.TestDIServiceImpl类托管给Spring,让Spring建立其第一类,同时给构造方法传递实参。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务