0、Spring(核心:IOC+AOP)

  • IOC(容器)
  • AOP(面向切面编程)

1、IOC(inversion of conctrol):控制反转

  •  控制:资源的获取方式
    • 主动式:(要什么资源都自己创建即可)

  • 被动式:(资源的获取不是我们自己创建,而是交给一个容器来创建和设置)

容器:管理所有的组件(有功能的类)


假设,上面的例子BookServlet受容器管理,BookService也受容器管理;容器可以自动查出哪些组件(类)需要用到另一些组件(类)容器帮我们创建BookService对象,并把BookService对象赋值过去

容器:主动的new资源变为被动的接受资源

举例:(容器)就像婚介所。主动获取变为被动接受。

DI:(Dependency Injection)依赖注入

  • 容器能知道哪个组件(类)运行的时候,需要另外一个组件(类)
  • 容器通过反射的形式,将容器中准备好的BookService对象注入(利用反射给属性赋值)到BookServlet

只要是IOC容器管理的组件,都能使用容器提供的强大功能。

2、HelloWorld(通过各种方式给容器中注册对象(注册会员))
以前是自己new对象,现在所有的对象交给容器创建;给容器中注册组件

以后框架编写流程:
1)导包各种lib
2)写配置Spring的配置文件中,集合了Spring的IOC容器管理的所有组件(会员清单);
创建一个Spring Bean Configuration File(Spring的bean配置文件)
创建一个类

定义好几个属性 ,并设置好getter/setter/toString方法

在ioc.xml中增加bean标签

class:要写注册的组建的全类名id:这个对象的唯一标识class相当于去婚介所告诉人你的身份证号,这个id就是婚介所内部唯一的id标识

使用property标签为Person对象的属性赋值

3)测试
创建一个测试类IOCTest.java
package com.creatapd.test;

运行后可以看到,ioc容器自动给我们创建了容器。

几个细节:
1、ApplicationContext是IOC容器的接口
2、容器中对象的创建在容器创建完成的时候就已经创建好了
3、同一个组件在IOC容器中是单实例的
4、IOC容器在创建这个组件对象的时候,property方法会利用setter方法为java bean的属性进行赋值