• Spring学习笔记3 Spring对IOC的实现


    Spring学习笔记2 Spring的入门程序_biubiubiu0706的博客-CSDN博客

    控制反转是一种思想

    控制反转是为了降低程序耦合度,提高程序扩展力,达到OCP(开闭原则)原则,达到DIP(依赖倒置原则)原则

    控制反转,反转的是什么?

    1.将对象的创建权力交出去,交给第三方容器负责

    2.对象与对象之间关系的维护权交出去,交给第三方容器负责

    控制反转这种思想如何实现---->DI依赖注入

    一句话:通过DI依赖注入实现IOC控制反转    控制反转是思想,依赖注入是实现

    依赖注入常见方式2种

    1.Set注入

    2.构造注入

    新建模块时候报错,看样子IDEA也要更新了

     

    引入依赖

    
        
            org.springframework
            spring-context
            6.0.10
        
        
            junit
            junit
            4.13.2
            test
        
    
        
        
            org.apache.logging.log4j
            log4j-core
            2.19.0
        
        
            org.apache.logging.log4j
            log4j-slf4j-impl
            2.19.0
        
    
    

    log4j2.xml

    
    
        
            
            
                
            
        
        
            
            
                
                
            
        
    

    Spring配置文件

    
    
    
    

    1.Set注入,基于set方法实现,底层会通过反射机制调用属性对应的set方法然后给属性赋值.这种方式要求属性必须对外提供set方法

    使用IDEA生成的set方法

    搞清楚  Set注入本质

    找不到setvipdao的方法

    原因是Set注入  name是set方法名,取掉set首字母转小写才行

    依赖注入之构造方法注入

    set注入,先要有对象,对象执行set方法

    而构造注入是创建对象的同时,给属性赋值    注入的时机不一样

    业务层新建一个类   新建一个beans2.xml演示构造方法注入

    测试

    上面用下标指定参数,也可以用name   参数名字指定  还可以不指定下标,也不指定参数名,让Spring自己做类型匹配

    构造注入和Set注入,一般set注入相对较多

    set注入专题:(必须提供set方法)

    1.注入外部Bean和注入内部bean

    新建个Spring配置文件  取名set-di.xml专配用于set注入

    新建个OrderDao

    新建个OrderService

    此种方式就是外部bean ref引入

    日志太多可以

    调整下

    演示内部bean

    在property标签中使用嵌套bean就叫内部bean

    测试

    2.set注入,注入简单类型

    原先通过set方法注入的是OrderDao 引入类型

    下面看下  简单类型的注入

    新建一个类  提供set方法 和toString方法

    在Spring配置文件 set-di里配置

    测试

    那么所谓的简单类型包括什么呢,哪些是简单类型

    Spring中有个工具类    双击SHIFT  或者 CTRL+N

    搜索  BeansUtils

    按ALT+7  可以看到这个类里所有方法

    查看isSimpleValueType这个方法 这个方法就是Spring判定是否是简单类型的方法

    测试几个简单类型  定义个枚举

    测试new Date()的输出格式    Sat Sep 23 00:41:46 CST 2023

    都提供相应的set方法 提供toString方便输出看值

    在set-di.xml里配置

    测试

    set注入简单类型的经典应用

    举例:数据源,DataSource

    测试

    set注入之级联属性赋值

    创建两个类测试

    配置

    测试

    上面并不是所谓的级联属性赋值

    set方法注入数组(数组里面可能是简单类型,也可能不是简单类型)

    先演示数组里面是简单类型

    演示数组里面不是简单类型

    新建类

    Person添加属性并重写set方法               toString只为输出时候看的方便

    测试

    set注入List和Set集合

    set注入List集合

    新建类

    测试

    Set注入Map集合

    注意:如果Map的key  value不是简单类型的配置

    Map还有一个特殊的类Properties   继承Hashtable

    set注入  注入null和空字符串

    set注入  注入特殊字符

    xml中有5个特殊符号,分别是:   大于号 >    小于号  <   单引号  '     双引号  "     与   &

      

    实体符号代替特殊符号 对照表

    set注入   p命名空间注入也是基于set方法

    注意:P空间注入底层还是set注入,只不过P命名空间注入可以让Spring配置变得更简单

    新建类

    新建配置文件spring-p.xml

    C命名空间注入  是为了简化构造注入

    新建类

    新建配置文件    可以用简单注入   也可以用ref

    util命名空间让配置复用

    使用util命名空间可以让配置复用

    使用util命名空间的前提是:在Spring配置文件头部添加配置信息.

    所谓的配置复用     新建两个类

    原先的配置方式  但是重复

    用util命名空间让配置复用

    简写后

    测试

    基于XML的自动装配(无论是byName还是byType都是基于set方法的)

    Spring还可以完成自动化注入,自动化注入又称为自动装配,它可以根据名字进行自动装配,也可以根据类型进行自动装配

    根据名称自动装配

    以OrderDao和OrderService演示

    新建个配置文件 spring-autowire.xml

    原先的写法

    测试

    自动装配  byName测试  如果是Idea工具自动生成set方法,那么就是和变量名相同(关键严格记住set方法名去掉set首字母小写)

    被注入的对象,被注入的对象

    基于XML自动装配   byType

    下面用Customer演示  添加无参构造  和set方法

    注意 byType的话   如果类型有两个  会报错

    比如

    引入外部属性配置文件

    比如现在有个类,类里属性来自于属性配置文件

    创建jdbc.properties

    新建个配置文件 spring-properties

    引入外部文件写法

    为什么出现这种情况原因: ${user} Spring默认去读到的是系统配置的

    因此,建议加前缀

  • 相关阅读:
    node24-nodejs模块化的开发导出另一种方式
    一名合格的软件测试工程师,应该具备哪些技术能力?
    秋招华为架构分享,深谙面试之道的Java面试八股文
    JDBC和JPA之间的比较
    全志R528代码编译和烧录以及测试
    Python—线性回归
    基于SSM的考研图书电子商务平台的设计与实现
    CASIO4800线路坐标计算程序(1)
    Slax Linux 获得增强的会话管理和启动参数选项
    智能驾驶ADAS算法设计及Prescan仿真(2): 自适应巡航ACC控制策略设计与simulink仿真
  • 原文地址:https://blog.csdn.net/tiantiantbtb/article/details/133167237