spring学习笔记(三)spring5.x与日志框架整合+注入

整合日志框架

为什么

  1. 与日志框架整合,日志框架可以再控制台中输出spring框架运行过程中的一些重要信息。比如spring创建对象等重要操作。
  2. 好处:便于了解spring框架的运行过程,利于程序的调试。

spring如何整合日志框架

  1. spring 1 2 3早期都是与common-logging.jar

  2. spring5.x默认整合的日志框架 logback log4j2(和log4j不太一样)

  3. spring 5 整合log4j
    引入log4jjar包
    slf4j 日志门面,核心作用就是把默认的都干掉,使用log4j
    spring学习笔记(三)spring5.x与日志框架整合+注入_第1张图片

     引入log4jproperties配置文件
    

    spring学习笔记(三)spring5.x与日志框架整合+注入_第2张图片
    增加了spring内部运行的日志信息
    在这里插入图片描述

注入(injection)

什么是注入

通过spring工厂及配置文件, 为所创建对象的成员变量赋值。

为什么需要注入

set方法可以实现赋值,但是存在耦合。修改时要修改代码。
spring学习笔记(三)spring5.x与日志框架整合+注入_第3张图片
注入,使用配置文件为成员变量赋值。
spring学习笔记(三)spring5.x与日志框架整合+注入_第4张图片
后续修改变量直接修改配置文件,不需要重新编译,重新部署。

注入的原理分析(简易版)

  1. 读取bean标签,获取id和类型,通过反射构造对象。
  2. 读取property获取这个对象的属性和要赋的值,翻译成对象的set方法,对成员变量赋值。

set注入

  1. 针对不同成员变量,property标签要嵌套其他标签。
    spring学习笔记(三)spring5.x与日志框架整合+注入_第5张图片

  2. 数组
    在这里插入图片描述

  3. set:自动去重
    spring学习笔记(三)spring5.x与日志框架整合+注入_第6张图片
    set不一定要用value标签,具体情况具体考虑

  4. list集合:有序,可重复。最主要的是外面的list,里面根据情况
    spring学习笔记(三)spring5.x与日志框架整合+注入_第7张图片

  5. map:外面map,里面一个entry一个键值对

spring学习笔记(三)spring5.x与日志框架整合+注入_第8张图片
6. property:特殊的map,key value都是string。外面props,里面prop。只能字符串 所以简化了
在这里插入图片描述
7. date:自定义类型转换器
8. 用户自定义类型
在这里插入图片描述
使用bean标签创建对象赋值,没有id属性,因为只有这里调用一次。
存在的问题:
配置文件代码冗余,注入dao对象多次创建,浪费JVM内存。
spring学习笔记(三)spring5.x与日志框架整合+注入_第9张图片
更好的方法:
先创建出userdao对象,并且给一个id。然后使用ref bean标签进行引用。
spring学习笔记(三)spring5.x与日志框架整合+注入_第10张图片
9. set注入的简化方式
属性替换标签,value属性智能简化8种基本类型+String
在这里插入图片描述
用户自定义类型。ref属性替换ref标签
spring学习笔记(三)spring5.x与日志框架整合+注入_第11张图片
命名空间p的简化:就是property的缩写。
spring学习笔记(三)spring5.x与日志框架整合+注入_第12张图片

构造注入

注入:通过配置文件为成员变量复制
set注入:调用set方法通过配置文件为成员变量赋值
构造注入:调用构造方法,通过配置文件,为成员变量赋值。
property代表的就是set方法的方式
构造方法用constructor-arg。里面是一样的。

1.要提供构造方法
2.配置文件通过constructoer-arg标签,标签的对数和构造参数一致,顺序一致。
spring学习笔记(三)spring5.x与日志框架整合+注入_第13张图片

构造方法重载

参数个数不同,可以通过标签数量区分。
参数个数相同,要加类型来区分了。
参数个数相同,类型也相同?不可能的,这个语法报错,根本不是重载。

总结

未来用set更多

  1. 构造注入麻烦,重载
  2. spring框架底层大量应用了set注入。

你可能感兴趣的:(spring学习笔记(三)spring5.x与日志框架整合+注入)