目录
什么是Spring
是一款轻量企业级的开发框架,以IOC和AOP两大核心思想为内核,提供了展示层Spring MVC和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,能完美整合任意第三方技术[【框架和类库】,提供组件管理服,用于组件之间的解耦
企业级理解:
从头到尾,所有的应用层都由Spring来实现,符合企业级的标准:高并发,灵活多变的特性
而Mybatis是针对数据访问层的一款专业技术
Spring的优势
方便解耦,简化开发
通过IOC容器来实现解耦,实现组件化编程,避免硬编码所造成的过度程序耦合,容易作扩展
硬编码的方式解耦合:
通过工厂模式解耦:
1.不要直接new对象,把他们的“完全限定名保存在独立的properties文件中”
2.动态加载文件,并获取完全限定名称,通过“反射创建”。
AOP编程的支持
增强传统的OOP,进行面向切面编程
声明式事务的支持
通过声明式方式灵活的进行事务的管理,提高开发效率和质量
方便测试
集成各种优秀框架
Spring环境搭建:
1.坐标
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.29</version>
</dependency>
导入spring-context坐标后就集成了以下六个基本jar包
2.创建主配置文件
<?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">
</beans>
两大核心思想
控制反转-Inversion Of Control
搭建好IOC容器【即Spring容器】将创建对象的权利交给Spring容器,由Spring框架根据配置文件或注解的方式创建并管理bean,bean与bean的依赖关系,使对象 之间形成松散耦合的关系,实现解耦。
控制:指创建对象的权利
反转:控制权交给外部环境
目的:解耦,使用IOC容器管理项目组件之间的耦合关系
SpringIOC实现步骤
1.创建JavaBean
2.将 JavaBean对象注入spring容器
3.让springIOC容器以解耦方式实例化对象
Eg:解耦获取dao对象
public class Test01 {
public static void main(String[] args) {
//1.加载spring容器获取核心对象
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//2.获取实例
IUserDao dao = (IUserDao) applicationContext.getBean("dao");
dao.save();
}
}
涉及的关键字:
BeanFactory:父接口,多例模式【安全,性能差】
ApplicationContext :子接口 ,单例模式【性能好,但不安全】
实现类:
ClassPathXmlApplicationContext 相对路径加载配置文件
FileSystemXmlApplicationContext 绝对路径加载配置文件
AnnotationConfigApplicationContext 相对路径加载配置类
依赖注入-Spring DI
spring容器帮我们解耦创建了对象,但是怎么实现依赖调用
理解:
将A和B的依赖关系以注入的方式关联在一起
实现方式:
构造注入 通过构造方法进行关联
set注入 通过setter方法进行关联
属性注入 通过注解实现
数据类型
注入基本数据类型与String
注入JavaBean
注入复杂类型
实现步骤
1.提供对应的方法
2.配置xml--使用构造
<constructor-arg 属性名="属性值"></constructor-arg> 属性名: name=======>参数名 index======>参数索引 type=======>参数类型 value======>参数具体数据 ref========>参数数据的引用 用来实现JavaBean的注入
使用set注入
<property name="service" ref="serviceImp"/>
测试