Spring

Spring

  • 1.Spring发展史
  • 2.Spring核心概念
    • 2.1 IOC
      • 2.1.1 底层原理
      • 2.1.2 代码实现
      • 2.1.3 Spring工厂
      • 2.1.4 DI注入
    • 2.2 AOP
  • 3.Spring纯注解开发
    • 3.1 配置类代替配置文件

1.Spring发展史

Spring_第1张图片
版本发展节点

Spring_第2张图片

2.Spring核心概念

2.1 IOC

为什么要有IOC?
Spring_第3张图片

将原来在程序中手动创建的对象,交给Spring工厂来创建管理。

2.1.1 底层原理

工厂(设计模式)+反射(机制) + 配置文件(xml)。
Spring_第4张图片
在Spring 3.0之前, 主流使用xml配置 + 注解开发, xml配置开发, 可以帮我们理解代码的本质和底层逻辑, 但随着Spring 3.0的到来, 纯注解开发成为了主流

2.1.2 代码实现

一、引入Spring依赖坐标

<dependencies>
    
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-contextartifactId>
        <version>5.2.10.RELEASEversion>
    dependency>
dependencies>

我们只需要引入spring-context, 就可以间接引入spring-core、spring-beans、spring-expression、spring-aop
Spring_第5张图片

二、spring相关依赖(扩展知识)
spring核心依赖: spring-core、spring-beans、spring-context
springdao依赖(提供JDBCTemplate): spring-jdbc、spring-tx
spring web依赖: spring-web、spring-webmvc
spring test依赖:spring-test
springAOP依赖:spring-aspects(集成AspectJ)、spring-instrument

2.1.3 Spring工厂

ApplicationContext工厂, 直译为应用上下文, 是用来加载Spring框架配置文件,来构建Spring的工厂对象, 也称之为Spring的容器。

ApplicationContext 只是BeanFactory(Bean工厂,Bean就是一个java对象) 一个子接口:

Spring_第6张图片

一、为什么不直接使用顶层接口对象来操作呢?

  1. BeanFactory采取延迟加载,第一次getBean时才会初始化Bean
  2. ApplicationContext是对BeanFactory扩展,提供了更多功能(国际化处理、事件传递、Bean自动装配、各种不同应用层的Context实现)

ApplicationContext 更加强大, 所以现在开发基本没人使用BeanFactory。

二、从Spring工厂中获取bean的两种方式

  1. 通过spring容器的bean的id/name来获取
  2. 根据bean的类型或者bean接口的类型获取,一般使用接口类型

2.1.4 DI注入

Dependency Injection 依赖注入,在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件(简单的说,可以将另外一个bean对象动态的注入到另外一个bean中。)

IOC经常会和DI一起提起,有些同学还会把这两者混为一谈。实际上IOC和DI并不是同一个概念。IOC是一种设计模式,DI是IOC的实现方式。

Spring中的依赖注入可以分为: 手动注入和自动注入两种。

一、手动注入
手动注入即我们通过xml的方式,手动对bean设定使用哪个Bean对依赖进行注入。 手动注入又可以分为方法注入和构造器注入。

方法注入: 在xml中指定了userService中的orderService属性将通过ref指定的bean进行注入。底层会通过set方法进行注入。
<bean name="userService" class="com.mtb.service.UserService">
        <property name="orderService" ref="orderService"/>
bean>

构造器注入: 这种配置会使用构造方法进行注入。
<bean name="userService" class="com.mtb.service.UserService">
        <constructor-arg index="0" ref="orderService"/>
bean>

二、自动注入
自动注入也可以分为两种:@Autowired注解注入 XML中配置autowire注入(不常见)

@Autowired是我们现在最常用的方式了

  • 属性上:先根据属性类型去找Bean,如果找到多个再根据属性名确定一个
  • 构造方法上:先根据方法参数类型去找Bean,如果找到多个再根据参数名确定一个
  • set方法上:先根据方法参数类型去找Bean,如果找到多个再根据参数名确定一个

三、IOC和DI小结

  • IOC:控制反转,将对象创建管理的权利交给spring容器,获取对象通过spring工厂创建
  • DI:在spring容器中创建管理多个对象,通过 property标签将对象注入到需要依赖的对象中

2.2 AOP

3.Spring纯注解开发

Spring3.0开启了纯注解开发模式,使用Java类替代配置文件,开启了Spring快速开发赛道

3.1 配置类代替配置文件

传统的开发, 是要手动编写Spring核心配置文件(applicationContext.xml), 而Spring 3.0开启了纯注解的开发模式, 使用java类替代配置文件
Spring_第7张图片
连接一
连接二

你可能感兴趣的:(spring,数据库,java)