本文主要是介绍spring学习笔记(三)spring5.x与日志框架整合+注入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
整合日志框架
为什么
- 与日志框架整合,日志框架可以再控制台中输出spring框架运行过程中的一些重要信息。比如spring创建对象等重要操作。
- 好处:便于了解spring框架的运行过程,利于程序的调试。
spring如何整合日志框架
-
spring 1 2 3早期都是与common-logging.jar
-
spring5.x默认整合的日志框架 logback log4j2(和log4j不太一样)
-
spring 5 整合log4j
引入log4jjar包
slf4j 日志门面,核心作用就是把默认的都干掉,使用log4j
引入log4jproperties配置文件
增加了spring内部运行的日志信息
注入(injection)
什么是注入
通过spring工厂及配置文件, 为所创建对象的成员变量赋值。
为什么需要注入
set方法可以实现赋值,但是存在耦合。修改时要修改代码。
注入,使用配置文件为成员变量赋值。
后续修改变量直接修改配置文件,不需要重新编译,重新部署。
注入的原理分析(简易版)
- 读取bean标签,获取id和类型,通过反射构造对象。
- 读取property获取这个对象的属性和要赋的值,翻译成对象的set方法,对成员变量赋值。
set注入
-
针对不同成员变量,property标签要嵌套其他标签。
-
数组
-
set:自动去重
set不一定要用value标签,具体情况具体考虑 -
list集合:有序,可重复。最主要的是外面的list,里面根据情况
-
map:外面map,里面一个entry一个键值对
6. property:特殊的map,key value都是string。外面props,里面prop。只能字符串 所以简化了
7. date:自定义类型转换器
8. 用户自定义类型
使用bean标签创建对象赋值,没有id属性,因为只有这里调用一次。
存在的问题:
配置文件代码冗余,注入dao对象多次创建,浪费JVM内存。
更好的方法:
先创建出userdao对象,并且给一个id。然后使用ref bean标签进行引用。
9. set注入的简化方式
属性替换标签,value属性智能简化8种基本类型+String
用户自定义类型。ref属性替换ref标签
命名空间p的简化:就是property的缩写。
构造注入
注入:通过配置文件为成员变量复制
set注入:调用set方法通过配置文件为成员变量赋值
构造注入:调用构造方法,通过配置文件,为成员变量赋值。
property代表的就是set方法的方式
构造方法用constructor-arg。里面是一样的。
1.要提供构造方法
2.配置文件通过constructoer-arg标签,标签的对数和构造参数一致,顺序一致。
构造方法重载
参数个数不同,可以通过标签数量区分。
参数个数相同,要加类型来区分了。
参数个数相同,类型也相同?不可能的,这个语法报错,根本不是重载。
总结
未来用set更多
- 构造注入麻烦,重载
- spring框架底层大量应用了set注入。
这篇关于spring学习笔记(三)spring5.x与日志框架整合+注入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!