Spring(一)简介与IOC

简介

是什么

分布的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse of control反转控制)AOP(Aspect oriented programming面向切片编程)为内核。

优势

(1) 方便解耦,简化开发

(2)AOP编程的支持

(3)声明式事务的支持

(4)方便程序的测试

(5)方便集成各种优秀框架

(6)降低Java EE中API的使用难度

体系结构

快速入门

Spring程序开发步骤

(1)导入Spring开发的基本包坐标

(2)编写Dao接口和实现类

(3)创建Spring核心配置文件

(4)在Spring配置文件中配置UserDaoImpl

(5)使用Spring中的API获得Bean实例

Spring配置文件

Bean标签基本配置

用于配置对象交由Spring来创建

默认情况下它调用的是类中的无参构造函数,如果没有无参构造函数则不能创建成功。

基本属性:

(1)id:Bean实例在Spring容器中的唯一标识

(2)class:Bean的全限定名称

Bean标签范围配置

scope:对象的作用范围,取值如下:

当范围取值不同时,对象创建的时机也不同

  1. 当scope的取值为singleton时(加载配置文件时创建
  • Bean的实例化个数:1个
  • Bean的实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例Bean的生命周期:
  • 对象创建:当应用加载,创建容器时,对象就被创建了对象运行:只要容器在,对象一直活着
  • 对象销毁:当应用卸载。销毁容器时,对象就被销毁了
  1. 当scope的取值为prototype时(使用对象时创建,getBean时
  • Bean的实例化个数:多个
  • Bean的实例化时机:当调用getBean)方法时实例化Bean
  • 对象创建:当使用对象时,创建新的对象实例对象运行:只要对象在使用中,就一直活着
  • 对象销毁:当对象长时间不用时,被Java的垃圾回收器回收了
  1. Bean生命周期配置

    Init-method:指定类中的初始化方法名称

    Destroy-method:指定类中销毁方法名称

  2. Bean实例化三种方式

    (1)无参构造方法实例化

    (2)工厂静态方法实例化

    (3)工厂实例方法实例化(非static方法不能,不使用对象直接调用,需要先创建工厂对象,再通过对象调用getXXXDao方法获取最终对象)

  3. Bean的依赖注入分析

    (1)依赖注入是什么

    依赖注入(Dependency Injection):是Spring框架核心IOC的具体实现。

    在编写程序时,通过控制反转,把对象的创建交给了Spring,,但是代码中不可能出现没有依赖的情况。IOC解耦只是降低他们的依赖关系但不会消除。例如:业务层仍会调用持久层的方法。

    那这种业务层和持久层的依赖关系,在使用Spring之后,就让Spring来维护了。简单的说,就是坐等框架把持久层对象传入业务层,而不用我们自己去获取。

    (2)Bean的依赖注入方式

    怎么将UserDao注入到UserService内部呢?

  • 构造方法

    有参构造

  • set方法

    ①简化方法

    ②在需要注入的Bean中增加新标签

    (3)Bean依赖注入的数据类型

    上面的操作,都是注入的引用Bean,处了对象的引阿以注入,普通数据类型,集合等都可以在容器中进行注入。

    注入数据的三种数据类型:

    • 普通数据类型
    • 引用数据类型
    • 集合数据类型

    (4)引入其他配置文件(分模块开发)

小结

Spring相应api

  1. ApplicationContext的实现类

    (1)ClassPathXmlApplicationContext

    ​ 根据从类的根路径下加载配置文件,推荐使用这种

    1. FileSystemXmlApplicationContext

    ​ 它是从磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置。

    1. AnnotationConfigApplicationContext

    ​ 当使用注解配置容器对象时,需要使用此类来创建spring容器。它用来读取注解。

  2. getBean()方法使用

    根据id创建可以创建多个相同类型对象。

    只存在一个可以使用通过类型创建。

Spring配置数据源

  1. 数据源(连接池)的作用

    • 提高程序性能
    • 事先实例化数据源,初始化部分连接资源
    • 使用连接资源时从数据源中获取
    • 使用完毕后将连接资源归还给数据源
    • 常见数据源(连接池):DBCP、C3PO、BoneCP、Druid等
  2. 抽取jdbc配置文件

Spring注解开发

  1. Spring原始注解

注意:

使用注解进行开发时,需要在applicationContext.xml中配置组件扫描,作用是指定哪个包及其子包下的Bean需要进行扫描以便识别使用注解配置的类、字段和方法。

  1. Spring新注解

Spring整合Junit

​ Spring集成Junit步骤