第一章 Spring

目录

1,Spring的历史

2,Spring官网地址

3,Spring系统架构

(1)核心层

(2)AOP层

(3)数据层

(4)Web层

(5)Test层

4,IOC,IOC容器,Bean,DI

1,IOC(反转控制)的概念

2,IOC容器

3,Bean

4,DI(依赖注入)

5,案例一(IOC入门案例 ):

步骤一:创建Maven项目

步骤二:添加spring依赖的jar包(pom.xml)

步骤三:创建BookService,BookServiceImpl,BookDao和BookDaoImpl四个类(附带截图和具体代码)

步骤四:添加Spring配置文件

步骤五:在配置文件中,配置Bean

步骤六:获取IOC容器

运行结果:

 6,案例二(DI入门案例 ):

步骤一:去除代码中的new,并为属性提供setter方法

步骤二:修改配置完成注入

运行结果:


1,Spring的历史

Spring发展史
IBM(IT 公司 - 国际商业机器公司 ) 1997 年提出了 EJB 思想 , 早期的 JAVAEE 开发大都基于该思想。
Rod Johnson(Java J2EE 开发领域的专家 ) 2002 年出版的 Expert One - on - One J2EE
Design and Development , 书中有阐述在开发中使用 EJB 该如何做。
Rod Johnson 2004 年出版的 Expert One - on - One J2EE Development without EJB , 书中提
出了比 EJB 思想更高效的实现方案,并且在同年将方案进行了具体的落地实现,这个实现就是
Spring1.0
随着时间推移,版本不断更新维护,目前最新的是 Spring6
Spring1.0: 是纯配置文件开发
Spring2.0: 为了简化开发引入了注解开发,此时是配置文件加注解的开发方式
Spring3.0: 已经可以进行纯注解开发,使开发效率大幅提升,我们的课程会以注解开发为主
Spring4.0: 根据 JDK 的版本升级对个别 API 进行了调整
Spring5.0: 已经全面支持 JDK8
Spring6.0: 支持 Java 17+基线和 Jakarta EE 9+, 对新一代容器 Tomcat 10.1 的支持
本节介绍了 Spring 家族与 Spring 的发展史,需要大家重点掌握的是 :
今天所学的 Spring 其实是 Spring 家族中的 Spring Framework
Spring Framework Spring 家族中其他框架的底层基础,学好 Spring 可以为其他 Spring
架的学习打好基础

2,Spring官网地址

官网: https://spring.io

3,Spring系统架构

  1. Spring FrameworkSpring生态圈中最基础的项目,是其他项目的根基
  2. Spring Framework的发展也经历了很多版本的变更,每个版本都有相应的调整

(1)核心层

Core Container:核心容器,这个模块是Spring最核心的模块,其他都需要依赖该模块

(2)AOP层

AOP:面向切面编程,它依赖核心层容器,目的是在不改变原有代码的前提下,对其进行功能增强

Aspects:AOP是思想,Aspects是对AOP思想的具体实现

(3)数据层

Data Access:数据访问,Spring全家桶中有对数据访问的具体实现技术

Data Intergration:数据集成,Spring支持整合其他数据层的解决方案,比如Mybatis

Transactions:事务,Spring中事务管理是Spring AOP的一个具体实现

(4)Web层

(5)Test层

Spring主要整合了Junit来完成单元测试和集成测试

4,IOC,IOC容器,Bean,DI

1,IOC(反转控制)的概念

IOC:Inversion of Control,翻译过来是反转控制

概念:在使用对象时,由主动new一个对象转为由外部去提供对象,在这个过程中,对象创建控制权从程序转到外部,这种思想称为控制反转

2,IOC容器

Spring和IOC思想的关系

1)Spring技术对IOC思想进行实现

2)Spring提供了一个容器,成为IOC容器,用来作为IOC思想中的"外部"

3)外部:指的是Spring的IOC容器

3,Bean

被创建或被管理的对象在IOC容器中统称为Bean

容器中所存放的一个个对象就叫BeanBean对象

IOC容器的作用IOC容器负责对象的创建、初始化等一系列工作,其中包含了数据层和业务层的类对象

4,DI(依赖注入)

DI:Dependency Injection,翻译过来是依赖注入

在容器中建立 bean bean 之间的依赖关系的整个过程,称为依赖注入

5,案例一(IOC入门案例 ):

需求分析: BookServiceImpl BookDaoImpl 交给 Spring 管理,并从容器中获取对应的 bean
对象进行方法调用。
  1. 创建Maven项目(Java项目)
  2. 在pom.xml添加Spring的依赖的jar包
  3. 创建BookService,BookServiceImplBookDaoBookDaoImpl四个类
  4. resources 下添加 spring 配置文件,并完成 bean 的配置
  5. 使用Spring提供的接口完成IOC容器的创建

    6.从容器中获取对象进行方法调用

步骤一:创建Maven项目

步骤二:添加spring依赖的jar包(pom.xml)

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.10.RELEASE</version>
    </dependency>
  </dependencies>

步骤三:创建BookService,BookServiceImpl,BookDaoBookDaoImpl四个类(附带截图和具体代码)

public interface BookDao {
    public void save();
}

public class BookDaoImpl implements BookDao {
    public void save() {
        System.out.println("BookDao Save....");
    }
}

public interface BookService {
    public void save();
}

public class BookServiceImpl implements BookService {
    BookDao bookDao = new BookDaoImpl();
    public void save() {
        System.out.println("BookService Save!!!");
        bookDao.save();
    }
}

步骤四:添加Spring配置文件

右键点击resources,鼠标放到new上,再选择XML Configuration File,选择Spring Config

步骤五:在配置文件中,配置Bean

 

<bean id="bookDao" class="com.hw.dao.impl.BookDaoImpl"></bean>
    <bean id="bookService" class="com.hw.service.impl.BookServiceImpl"></bean>

步骤六:获取IOC容器

使用spring中提供的接口完成IOC容器创建,并创建一个Test类,编写main方法,从容器中获取方法,并进行调用

public class Test {
    public static void main(String[] args) {
        //读取spring的配置文件,创建出IOC容器,并把所有的Bean对象创建出来放到IOC容器中去
        ClassPathXmlApplicationContext context =
                new ClassPathXmlApplicationContext("applicationContext.xml");
        //获取service层对象
        //Object bookService = context.getBean("bookService");
        //强制转换
        BookService bookService = (BookService) context.getBean("bookService");
        bookService.save();
    }
}

运行结果:

                BookService Save!!!
                BookDao Save.... 

SpringIOC入门案例已经完成,但是在BookServiceImpl的类中依然存在BookDaoImpl对象的
new操作,它们之间的耦合度还是比较高,这块该如何解决,就需要用到下面的DI:依赖注入

 6,案例二(DI入门案例 ):

需求 : 基于 IOC 入门案例,在 BookServiceImpl 类中删除 new 对象的方式,使用 Spring DI 完成
Dao 层的注入
1. 删除业务层中使用 new 的方式创建的 dao 对象
2. 在业务层提供 BookDao setter 方法
3. 在配置文件中添加依赖注入的配置
4. 运行程序调用方法

步骤一:去除代码中的new,并为属性提供setter方法

在bookServiceImpl类中,删除业务层中使用new的方式创建的dao对象下

在bookServiceImpl类中,为BookDao提供setter方法

public class BookServiceImpl implements BookService {
    //删除业务层中使用new的方式创建的dao对象
   private BookDao bookDao;
    public void save() {
        System.out.println("BookService Save!!!");
        bookDao.save();
    }
    //提供对应的set方法
    public void setBookDao(BookDao bookDao){
        this.bookDao=bookDao;
    }
}

步骤二:修改配置完成注入

在配置文件中添加依赖注入的配置

<!--bean标签标示配置bean
        id属性标示给bean起名字
        class属性表示给bean定义类型
    -->
    <bean id="bookDao" class="com.hw.dao.impl.BookDaoImpl"></bean>
    <bean id="bookService" class="com.hw.service.impl.BookServiceImpl">
        <!--配置server与dao的关系-->
        <!--property标签表示配置当前bean的属性
        name属性表示配置哪一个具体的属性
        ref属性表示参照哪一个bean
        -->
        <property name="bookDao" ref="bookDao"/>
    </bean>
注意 : 配置中的两个 bookDao 的含义是不一样的!!!!
name="bookDao"           bookDao 的作用是让 Spring IOC 容器在获取到名称后,将首字母大写,前面加set 找对应的 setBookDao() 方法进行对象注入
ref="bookDao"         中 bookDao 的作用是让 Spring 能在 IOC 容器中找到 id bookDao Bean 对象给
bookService 进行注入

运行结果:

                BookService Save!!!
                BookDao Save....
  • 36
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值