spring入门
spring6最低要求Java17
程序开发
依照maven配置完成后
第一步:添加依赖
Spring Farmework和junit
第二步:创建Java类
第三步:创建Spring配置文件beans.xml在resources目录中。
创建Spring Config,配置文件可随意命名
第四步:将Hello类对象交给Spring的IOC容器管理,配置Hello对应的bean。
第五步:创建测试类进行测试
将该类从配置文件中取出bean,并执行
程序开发分析
底层通过反射机制调用无参数构造方法
反射 -》 动态获取对象信息与调用方法的功能
在运行时判断任意一个对象所属的类;
在运行时构造任意一个类的对象;
在运行时判断任意一个类所具有的成员变量和方法;
在运行时调用任意一个对象的方法。
`Java`反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为`Java`语言的反射机制。
Spring创建对象原理
dom4j解析beans.xml文件,从中获取class属性值,类的全类名
通过反射机制调用无参数构造方法创建对象
dom4j -》 Java的XML API
用于读写XML文件
API -》 一组在Java编程中使用的函数和类库, 供了一套访问主机系统资源的标准方法。
API随JDK提供,以类的形式存在于JDK。
利用API创建对象
getDeclaredConstructor()用于获取类指定构造方法,这里获取类无参构造方法。
newInstance()用于创建对象。
bean对象储存在spring容器,在spring源码底层就是一个map集合。
引入Log4j2日志框架
用于程序执行时,详细控制台的记录,帮助快速定位并解决问题
在执行测试类时,控制台通过log4j2输出执行的类和时间等信息
引入依赖
创建log4j2.xml(固定名)在resouces目录中常见XMl文件并添加如下代码
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<loggers>
<!--
level指定日志级别,从低到高的优先级:
TRACE < DEBUG < INFO < WARN < ERROR < FATAL
trace:追踪,是最低的日志级别,相当于追踪程序的执行
debug:调试,一般在开发中,都将其设置为最低的日志级别
info:信息,输出重要的信息,使用较多
warn:警告,输出警告的信息
error:错误,输出错误信息
fatal:严重错误
-->
<root level="DEBUG">
<appender-ref ref="spring6log"/>
<appender-ref ref="RollingFile"/>
<appender-ref ref="log"/>
</root>
</loggers>
<appenders>
<!--输出日志信息到控制台-->
<console name="spring6log" target="SYSTEM_OUT">
<!--控制日志输出的格式-->
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss SSS} [%t] %-3level %logger{1024} - %msg%n"/>
</console>
<!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,适合临时测试用-->
<File name="log" fileName="d:/spring6_log/test.log" append="false">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
</File>
<!-- 这个会打印出所有的信息,
每次大小超过size,
则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,
作为存档-->
<RollingFile name="RollingFile" fileName="d:/spring6_log/app.log"
filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
<SizeBasedTriggeringPolicy size="50MB"/>
<!-- DefaultRolloverStrategy属性如不设置,
则默认为最多同一文件夹下7个文件,这里设置了20 -->
<DefaultRolloverStrategy max="20"/>
</RollingFile>
</appenders>
</configuration>
使用log4j2代替sout输出控制台信息
创建Logger类的logger对象,使用logger.info()方法