Spring框架学习总结

◇◆丶佛笑我妖孽 提交于 2020-01-18 04:01:56

Spring框架学习总结

Spring框架简介

1.Spring是一个开源,轻量级的应用开发框架,主要目的是为了简化企业级应用,降低开发者的开发难度.
2.主要核心为IOC(控制反转)和AOP(面向切面),可以将组件的耦合性降到最低(解耦),便于系统日后的更新与维护.
3.为系统提供了一套整体的解决方案,开发者除了可以利用其本身提供的功能外,还可以整合其他第三方框架,可以自由选择采用哪些技术进行开发.

Spring体系结构组成

Spring体系结构图

Spring核心组件

1.BeanFactory Spring内部使用,创建bean的工厂
2.ApplicationContext Spring容器的上下文
3.IoC控制反转 开发者无需自己new对象,无需关心对象的创建过程
4.DI依赖注入 松耦合的方法实现对象直接的依赖
5.AOP面向切面编程 补充面向对象的不足

Spring IOC控制反转

IOC控制反转:将对象的创建,对象的存储,对象的管理交给Spring容器来处理.
在传统的java开发模式中,开发者需要一个对象时,需要自己new或者使用getInstance等方法,直接或者间接的调用对象的构造方法来创建一个对象.

Person person = new Person();
Person.eat();

由于new对象,会提高代码之间的耦合程度,层与层之间产生了紧密的关系,导致我们在修改或者是替换某一层时,会影响到其它层,严重违反了我们对软件进行分层的最初设计思想 – 软件各层之间互不影响,相互独立,修改某一层时,不会影响其它层.
而在Spring开发模式中,开发者不需要自己创建对象,而是将对象交给Spring容器管理,Spring容器使用工厂模式为我们创建对象,在我们需要使用时,直接调用Spring为我们创建的对象即可.省去了new对象,降低了代码的耦合性.

实例

1.创建Spring核心配置文件applicationContext.xml文件,内容如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	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-4.0.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">


</beans>

2.创建Person类

Public class Person{
	public void eat(){
		System.out.println("Person.eat");
	}
}

3.将Person对象交给Spring容器处理

//applicationContext.xml文件中添加
//id是唯一标识,class为对象的全路径 包名+类名
<bean id="person" class="com.mrli.spring.Person"></bean>

4.创建对象,并调用其方法

//1.加载Spring的核心配置文件
ClassPathXmlApplicationContext cpac = new ClassPathXmlApplicationContext("applicationContext.xml");
//2.从Spring容器中获取bean对象
Person person = cpac.getBean("person");
person.eat();

小结

Spring框架的IOC—控制反转.创建对象从new对象,变为创建xml配置文件来创建.有就是由Spring容器来创建.
当程序运行时,spring开始工作,会加载整个的xml配置文件,读取到标签时,获取到class属性的类的全路径,利用反射创建该类的对象.

Spring DI注入

DI 依赖注入:依赖注入指的是组件之间的依赖关系由容器在应用系统运行期来决定,也就是由容器动态地将某种依赖关系的目标对象实例注入到应用系统中的各个关联的组件之中.(这段话我的了几遍之后,感觉不是普通(正常)人能写出来的).
简单来说,所谓的依赖注入其实就是,在创建对象的同时或之后,给对象赋值.
如果对象有我们自己创建
set方法

Person Person = new Person();
Person.setName("MrLi");

或者
构造方法

Person Person = new Person("Mrli");

如果对象由Spring来创建呢?
spring也提供了两种方法:
1.set方法
2.构造方法
实例
创建对象Person,添加属性Name生成get,set方法

Public class Person{
	private String name;
	public String getName(){
		return name;
	}
	public void setName(String name){
		this.name=name;	
	}
}

在applicationContext.xml文件中,为Person对象实例注入属性
set方法

<bean id="person" class="com.mrli.spring.Person">
	<property name="name" value="Mrli"></property>
</bean>

name属性只为Person类中get方法的名字去掉get后,首字母小写

总结

Spring的本质是管理软件中的对象,即创建对象和维护对象之间的关系.
缺点:大量的xml配置文件内容.使用SpringBoot框架可以简化配置文件.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!