第三章《Spring的入门程序》
1.Spring 的下载
可以去官网下载压缩包,里边还有英文手册,可以看看所有的jar包,用的时候直接在Maven里边引入就行。
2.Spring的jar包
这一小节对spring包含的重要的jar包对应的作用进行了解释,我在此阶段没有过多关注,基本跳过。下图是其中一部分。
注意:如果你只是想用Spring的loC功能,仅需要引入: spring-context即可。将这个jar包添加到classpath当中。如果采用maven只需要引入context的依赖即可。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.0.3</version>
</dependency>
3.Spring第一个程序
maven的配置
<packaging>jar</packaging>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<!--当你引入Spring context依赖之后,表示将Spring的基础依赖引入了-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.0.3</version>
</dependency>
<!--junit依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
创建一个bean包,添加一个User类,空着即可
右键resources目录,创建spring配置文件 ,放在resources目录下,编译打包后最后就放到了类的根路径下。
spring.xml的配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--bean标签的两个重要属性:
id:是这个bean的身份证号,不能重复,是唯一的标识。
class:必须填写类的全路径,全限定类名。(带包名的类名)
-->
<bean id="userBean" class="com.xue.spring6.bean.User" />
</beans>
其中class可以这样快速复制——右键要配置的类->复制路径/引用->下图所示
接下来进行测试,
4.第一个程序详细剖析
1.配置bean的id必须独一无二
2.Spring是怎么实例化对象的?
默认情况下Spring会通过反射机制,调用类的无参数构造方法来实例化对象。实现原理如下:
class clazz = Class.forName( "com. powernode .spring6.bean.User" );0bject obj = clazz.newInstance();
3.spring配置文件的名字随意,可以有多个,导入时逗号间隔
4.在配置文件中配置的类无须是自定义,可以使用JDK中的类
5.bean的名字写错会直接报错,而不是返回null
6.getBean()方法返回的类型是Object,如果访问子类的特有属性和方法时,还需要向下转型,此外还有另一种方式
User user = applicationContext.getBean( "userBean" ,User.class );
7.Spring 的IoC容器底层实际上使用了:工厂模式。Spring底层的IoC是怎么实现的?XML解析+工厂模式+反射机制
8.不是在调用getBean()方法的时候创建对象,执行以下代码的时候,就会实例化对象。getBean只是从Map集合中根据key拿到value
new classPathXmlApplicationContext("spring6.xml");
5.Spring6启用Log4j2日志框架
1.引入依赖
<!--log4j2的依赖-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.19.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>2.19.0</version>
</dependency>
2.提供配置文件
resources新建->文件->log4j2.xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<loggers>
<!--
level指定日志级别,从低到高的优先级:
ALL < TRACE < DEBUG < INF0 < WARN< ERROR < FATAL <OFF
-->
<root level="DEBUG">
<appender-ref ref="spring6log"/>
</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>
</appenders>
</configuration>
3.自己使用时(这块不是很懂,先简单截个图)