1.什么是Spring?

Spring是一个开源的轻量级的应用开发框架,其目的是用于简化企业级应用程序开发,降低侵入性。

Spring容器实现了IOC和AOP机制,这些机制可以简化Bean对象创建和Bean对象之间的解耦。

Spring容器有BeanFactory 和 ApplicationContext两种类型。

2.javaBean:符合一定规则的java对象。

符合如下规则的java对象称为javaBean:

  1. 必须有包。

  2. 必须有无参构造器。

  3. 必须实现序列化接口。

  4. 有getXXX setXXX声明的Bean属性方法。(没说必须有)

  5. - getxxx和setxxx是Bean属性,不是对象属性。

      - boolean类型的get属性,可以声明为isXXX。

  Spring IOC:用于管理(创建,修改属性等)javaBean对象。

  可以修改Bean属性。 可以作为java Bean的工厂使用。

3.Spring可以管理Bean属性。

Bean属性注入:修改“Bean属性”不是对象的属性!实际上是调用了setXXX方法。修改了Bean属性。

4.工厂方法:

简单理解就是利用方法创建对象,将对象复杂的创建过程封装到方法中,使用时候调用方法就重用了复杂的的对象创建过程,简洁的得到对象。

静态工厂方法:

例,DBUtils,getConn(){}

Connection conn=DBUtils.getConn(){};

动态工厂方法:

Statement st=conn.createStatement();

5.Spring创建对象的三种方式:

Spring帮助创建java Bean对象,Spring支持3中对象创建方式:

1.利用构造器创建java Bean

//初始化Spring容器,Spring会根据xml文件自动创建java bean 对象

ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");

//从Spring容器中获取Spring创建的Bean对象,"Car"是在xml文件中定义的id属性值

Car car=(Car)ac.getBean("car"); applicationContext.xml中:

<!-- 告诉Spring帮助创建一个Car对象,bean标签用于声明创建javaBean对象-->

<bean id="car" class="spring.day01.Car"></bean>

2.利用静态工厂方法创建对象

<!-- 利用工厂方法创建java Bean -->

<bean id="cal" class="java.util.Calendar" factory-method="getInstance"></bean>

//初始化Spring容器

ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");

//获取java Bean对象 Calendar cal=(Calendar)ac.getBean("cal");

System.out.println(cal.toString());

3.利用实例工厂方法创建对象

5.Bean的作用域

  1. Spring在默认情况下,其中Bean都是单例的!
  • 单例:在软件中一个永远唯一的对象,称为单例。

6.Bean 的生命周期管理

Spring中的Bean对象,由Spring控制对象的创建和销毁,这个过程称为Spring中Bean对象的生命周期管理。

  1. 单例对象 singleton(单例)
    • 创建:在Spring容器初始化时候,创建单例对象,如果设置了init-method属性,则在创建对象以后,调用初始化方法。
    • 使用:每次调用getBean方法时,返回的都是同一个对象。
    • 销毁:在Spring容器关闭的时候,会自动销毁单例对象,如果指定了destroy-method属性,则会在销毁之前执行 销毁 方法。
  1. 多例对象 prototype(原型)
    • 创建:在调用getBean方法的时候,创建对象,如果设置了init-method属性,则在创建对象以后调用初始化方法。
    • 使用:每次调用getBean时候,返回的都是新对象
    • 销毁:Spring不管!!也不会调用destroy-method!

<bean id="wolf" class="spring.day01.Wolf" init-method="init" destroy-method="destroy"></bean>

uri:统一资源标识符,uri可能在互联网上找不到。

url:互联网上一定存在,可以找到,统一资源定位符,任何一个url都是uri。

Bean及Bean的生命周期管理

 

 

7.Bean生命周期与延迟实例化

  1. 单例对象默认情况下在容器启动时立即初始化。
    • 如果这些对象内存耗用高,则启动会很慢。

对于内存占用高,使用少的对象,可以设置延迟(懒惰,按需)实例化。

在Bean标签上,使用懒惰属性设置就行。

设置了懒惰属性为true,lazy-init="true".

  1. 容器启动时,bean不实例化。
  2. 在第一次getBean()时实例化。
  3. 是单例Bean对象。

Bean及Bean的生命周期管理

 

多例对象没有延迟初始化问题。

2.IOC(Inversion of Control) 控制反转

IOC是指程序中对象的获取方式发生反转,由最初的new方式创建,转变为由第三方框架创建、注入(DI),他降低了对象之间的耦合度。

Spring容器是采用DI方式实现了IOC控制。IOC是Spring框架的基础和核心。

DI Dependency Injection,依赖注入。

DI的基本原理就是将一起工作的有关系的对象,通过构造方法参数或者参数传入建立连接,因此容器的工作是创建Bean时注入依赖关系。

IOC是一种思想,DI是实现IOC的主要技术途径。

DI有两种方式:setter注入和 构造器注入,能setter先setter,不行再用构造器参数注入

多种类型参数的注入

Bean及Bean的生命周期管理

Bean及Bean的生命周期管理

 

Spring表达式读取Bean属性,并且进行注入/读取properties文件

Bean及Bean的生命周期管理

 

xml组件扫描

Bean及Bean的生命周期管理

Bean及Bean的生命周期管理

 

 

指定依赖注入关系

Bean及Bean的生命周期管理

 

 

相关文章: