Spring IOC和DI

太过爱你忘了你带给我的痛 2022-06-08 07:17 504阅读 0赞

Spring IOC和DI

Center

  1. 框架:
    将一些公用的模块进行集成,通过框架的形式进行管理(事务控制,权限控制(Shiro),日志收集log)
  2. Spring框架
    SSH: Struts2(配置重型)+Spring(业务层)+Hibernate(orm)(500万数据变慢)中小型企业
    SSM: SpringMVC+Spting(业务层框架)+Mybatis(持久层框架)
  3. Spring框架:
    Spring框架是现在所有企业中都需要使用的框架,2大核心技术IOChe DI,AOP.Spring框架内部实现事务控制.只 要引用Spring的事务控制,从此程序员无需关注事务.
    作用:Spring能够整合现阶段所有的主流框架,让程序调用浑然一体.方便管理.—粘合剂
  4. Spring的学习计划:
  1. * **SpringIOCDI**
  2. * 简化Spring配置
  3. * **SpringAOP**
  4. * AOP的大量练习
  5. * Spring整合JDBC和声明式事务处理
  1. Spring的IOC
  1. * IOC是控制反转
  2. * 对象的创建过程由Spring容器来管理,程序员从此无需关注对象的创建过程,Spring容器管理对象的声明周期.
  3. * Person p1=new Person();—-程序员手动编写
  4. * Person p2=Spring容器.getXXX()方法:Spring容器创建
  1. Spring 入门案例
  1. * 导入jar
  2. * 创建实体类(javaBean)
  3. * **编辑配置文件(1.引入配置文件的头标签2.编辑配置类)**
  4. * 启动Spring容器(内部创建对象)
  5. * Spring容器中获取对象

入门案例

1 定义实体类
2 编辑配置文件
  • 默认名称:applicationContext.xml
  1. * 名称可以自定义:application-XXX.xml
  • 引入配置文件的头
    - Schema:让指定标签生效
    - DTD:Mybatis中配置文件使用
  • 引入方式:
  1. * 直接拷贝
  2. * 通过自己手痛配置
3 Spring创建对象的原理:

问题:Spring如何创建对象,对象是如何存储的,用户是如何获取的对象?

  1. Spring容器启动时,首先会加载spring核心配置文件.
  2. Spring逐行进行解析xml配置文件
  3. 当解析bean标签时开始创建对象,根据class属性中的数据通过反射机制创建对象.
  4. 将创建好的对象存入Spring所维护的Map中key 就是bean中的ID.value就是生成的对象
  5. 用户传入key,通过key来获取Mao中的value(对象)
  6. Spring容器中的对象的声明周期在默认情况下,同生共死
4 Spring容器获取对象的方式:

1.通过ID获取对象
2.通过class获取对象

5 头文件的引入
  • 拷贝
  • 自动生成
  1. * 引入约束文件
  2. * 添加约束文件
  3. * 自动生成约束文件
  4. * 通过模板自动引入
6 Spring创建对象的方式:
  • 通过构造方法创建对象
  1. * 通过反射
  2. * 说明:通过默认的无参构造方式创建对象是Spring中默认的方式,这样的方式用的最多,所以,以后在编辑构造方法时.一定要添加无惨构造.
  • 静态工厂创建对象
  1. * 实质:方法调用需要通过**类名.方法**
  2. * **为什么需要工厂模式:**有些对象不能够通过反射直接创建,抽象类和接口等
  • 实例工厂
  1. * 说明:实例化工厂本身需要创建对象
  2. * 实质:方法的调用需要通过**对象.方法**
  • Spring工厂
7 对象的单例和多例

说明:

  • Spring创建的对象默认的条件下是单利的对象.
  • 可以通过scope高边对象的单例和多例
    分析:
  • 单例和多例的具体划分
  1. * Servlet/Service/Dao/层级代码
  2. * 购物车:要求每人一份的需要设置为多例对象
  3. * javabean无需关注单利和多例,java安全机制默认设置
  4. **扩展**
  • 多例对象如何存储???
8 对象的懒加载机制
  • 什么时候使用对象,什么时候创建对象

DI 依赖注入

为属性赋值
1.set方法注入

  • 前提条件,为属性赋值是必须添加set方法,否则不能正确注入

2.构造方法注入

构造注入

  • 注意:构造方法中的参数必须和配置文件中引入的参数一致
  1. * 说明: 由于java中不会维护形参的名称,所以使用属性进行注入时,可能会有风险,所以以后一律使用index下标注值.

注入方式的分析:

  • 如果程序员自己写代码,set注入居多,如果是软件架构使用构造注入居多.

Spring中IOC和DI的意义

  • 无论之前是new对象和通过工厂模式实现.
  • Spring的IOC和DI一起连用时,可以为对象进行动态的赋值,如果将来具体的实现类法身了改变,只需要修改配置文件中的class属性即可,java代码不需要做任何修改.最终实现松耦合!!!
  • 迄今为止,松耦合问题上没有人比Spring做的好.

扩展

  • 权限管理的粒度控制
  • 反射调用时必须添加无惨构造
  • 整理各种的内存管理机制

发表评论

表情:
评论列表 (有 0 条评论,504人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Spring IoCDI

    为什么要有这么多的类注解呢?这与 应用分层 类似,为了在看到类注解后,就能直接了解当前类的用途@Controller:控制层,接收请求,对请求进行处理,并进行响应@Ser...

    相关 Spring IoCDI

    Spring是一个依赖注入(Dependency Injection, DI)和控制反转(Inversion of Control, IoC)容器。IoC意味着应用程序不...

    相关 Spring-框架-DIIoC

    DI:依赖注入,在一个java类中需要依赖另外一个类,通过spring容器在需要的时候把这个类注入到里面         运行时期,通过外部程序注入。一般是调用者创建被调用者

    相关 spring IocDI

    spring的“控制反转”和“依赖注入”,个人看来是一个意思。 传统java程序中,使用一个对象的时候,都需要先new Object()创建一个新对象,才能使用。对象的控制权

    相关 SpringIOCDI

    IoC IoC(控制反转),是指在程序的设计中,实例不再由调用者来创建,而是由Spring容器来创建。 Spring容器会负责控制程序之间的关系,而不是由程序代码直接控

    相关 SpringIOCDI

    学习了Spring框架的人,都会听到过IOC和DI这两个词,对于初学者来说,这两个词的概念模糊不清,很难理解,就我对控制反转和依赖注入进行简单的解释。以前创建对象的方式以及依赖