Spring入门案例
一、开发环境要求
1.软件版本
maven版本:3.8.8
jdk版本:jdk11
Spring版本:spring-5.2.8
Log 版本:logback
2.开发工具
IDEA2022社区版
MySQL8.0社区版
MySQL管理图形界面工具-Beekeeper Studio
二、Maven安装与配置
2.1 下载Maven并解压安装
在Maven官网(https://maven.apache.org/download.cgi)下载稳定版本Maven-3.8.8并解压安装,其安装目录为C:/Program Files/Maven3.8。
2.2 配置Maven环境变量MAVEN_HOME
配置Maven环境变量MAVEN_HOME,其值为"C:/Program Files/Maven3.8",具体操作过程如下
第一步:以Win10为例,选中桌面程序图标【此电脑】右键,选择【属性】,在弹出的对话框里选择左侧的【高级系统设置】弹出系统属性设置对话框,选择【环境变量】进入设置环境变量对话框。
第二步:添加系统变量MAVEN_HOME,变量值为Maven安装目录名称,在本示例中MavenC:/Program Files/Maven3.8;向系统变量path添加配置项"%MAVEN_HOME%\bin"。
第三步:按Win+R启动运行对话框,输入cmd命令启动window命令窗口,输入maven命令"mvn -V",观察是否输出"Apache Maven 3.8.8",如果是表示Maven安装配置成功。
2.3 完成maven全局配置
maven的配置文件名称为conf/settings.xml,全局配置包括localRepository(artifacts本地仓库)、mirrors(从远程仓库下载artifacts的镜像集合)、profile(激活配置文件)。
1.localRepository:本地仓库,可以自定义,默认目录是${user.home}/.m2/repository,如果是windows平台,用户(Administrator)的user.home为"C:\Users\Administrator"。
2.mirrors:从远程仓库下载artifacts的镜像组,可以配置多个镜像(mirror)。默认是国外下载镜像,下载速度较慢,需要更改为国内下载镜像,例如阿里云镜像、华为云镜像、腾讯云镜像、网易镜像等。
添加国内镜像方式,以添加阿里云镜像为例:
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
3.profile:编译所需的配置信息,满足激活条件时启用。参考配置示例
<profile>
<id>jdk-11</id>
<!--激活条件-->
<activation>
<jdk>11</jdk>
</activation>
<!--配置属性-->
<properties>
<!--编译项目源码编码方式为UTF-8-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--maven编译器JDK版本-->
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
</profile>
IDEA添加Spring支持的全局配置
3.1 maven的配置
Maven配置过程如下:
第一步,【File】->【Settings】->【Build,Execution,Deployment】->【Build Tool】->【Maven】,进入Maven设置界面。
第二步,依次配置“maven home path”、“User setting File”和“Local repository”,具体配置参数值如下:
(1)”maven home path“ 设置为IDEA内置Maven(bundled Maven3)或者自定义MAVEN安装目录。
(2)”User setting File“ 设置为自定义Maven的配置文件(settings.xml),配置信息级别分为用户自定义配置和全局配置,用户自定义配置文件的默认存放目录是:C:\Users\Administrator\.m2,而
全局配置文件的存放目录是maven安装目录下的conf文件夹。
(3)"local repository" 设置存放项目所需jar的本地仓库,Maven工具的maven-build-plugin插件会根据项目pom.xml的下载所需jar并存放到该目录。开发者可以指定本地仓库,常见做法是:在maven安装目录下创建repository文件夹作为本地仓库。
在本示例中,maven参考配置如下:
maven home path=C:/Program Files/Maven3.8
User setting File=C:\Program Files\Maven3.8\conf\settings.xml
local repository=C:\Program Files\Maven3.8\repository
3.2 Spring schema配置
编写基于Spring框架的应用程序通常需要配置applicationContext.xml,但是IDEA社区版中缺少applicationContext.xml的schema文件,
因此开发者需要手动添加springframework的schema配置,才能实现代码补全,提高开发效率。spring schema包括aop、beans、cache、context、jdbc、jee、jms、lang、mvc、oxm、task、tool、tx、util、websocket。
开发者可以根据配置需要直接下载对应schema(https://www.springframework.org/schema/)并拷贝至IDEA安装目录的C:/Users/Administrator/AppData/Local/JetBrains/IdeaIC2022.2/extResources/。在IDEA添加schema的过程:
第一步,【File】->【Settings】->【Languages& Frameworks】->【Schema And DTDs】进入设置schema操作界面。
第二步,依次添加springframework的bean和context的schema,操作过程:在操作界面点击【+】,在弹出的对话中填写需要添加的schema的URI和FILE。
在本示例中,context schema和bean schema的参考配置如下:
(1)context schema的URI和File的值分别为"http://www.springframework.org/schema/context" 和 "C:/Users/Administrator/AppData/Local/JetBrains/IdeaIC2022.2/extResources/schema/context/spring-context.xsd"
(2)bean schema 的URI和File的值分别为"https://www.springframework.org/schema/beans" 和 "C:/Users/Administrator/AppData/Local/JetBrains/IdeaIC2022.2/extResources/schema/beans/spring-beans.xsd"
四、创建基于Spring的Java项目
4.1 创建项目java_spring程序目录结构
使用maven项目模板maven-archetype-quickstart创建java项目java_spring,具体操作步骤如下:
第一步:启动IDEA,选择菜单【File】->【New】->【Project】,在弹出的New Project对话框中选择左侧的Maven Archetype、填写项目相关配置信息并点击【create】按钮执行创建项目动作,项目具体配置信息如下:
-----------------------------------------
| Name:java_spring
| Location:~\IdeaProjects
| JDK: 11(java version 11.0.17)
| Catalog:Internal
| Archetype:maven-archetype-quickstart
| Version:1.1(自动识别)
| -Additional Properties(maven项目拓展属性)
| project.build.sourceEncoding=UTF-8
| maven.compiler.source=11
| maven.compiler.target=11
| -Advanced Settings(maven项目高级配置)
| groupId=com.gxuwz
| artifactId=sample
| version=1.0-SNAPSHOT
-----------------------------------------
IDEA的Build控制台输出"Build Success"提示字符串,表示项目创建成功。项目的程序目录结构如下:
-----------------------------------------
java_spring
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- com
| `-- gxuwz
| `-- sample
| `-- App.java
`-- test
`-- java
`-- com
`-- gxuwz
`-- sample
`-- AppTest.java
-----------------------------------------
选中Project菜单中新创建的maven项目java_spring,右键选择【maven】->【reload project】,接着选中App.java,右键选择【Run App.main()】,
观察控制台是否能输出”Hello World!“提示,如果有,表示项目的配置成功。
第二步:添加静态资源目录resources,操作过程:选中项目java_spring并右键选择【open_module_setting】,在弹出project structure对话框里选择【sources】,
选中src目录的main,右键【New Directory】并输入新目录名称"resources";选中目录"resources",将其标记为(Mark as )Resources即可。
4.2 添加springframework支持
添加springframework支持包括创建IoC容器配置文件applicationContext.xml和添加springframework各模块的dependency。
(1)在本示例中仅涉及IoC容器,只需引入bean模块和context模块对应的dependency,在pom.xml中的配置内容如下:
-------------------------------------------------------------------------------
| <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
| <dependency>
| <groupId>org.springframework</groupId>
| <artifactId>spring-beans</artifactId>
| <version>5.2.8.RELEASE</version>
| </dependency>
| <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
| <dependency>
| <groupId>org.springframework</groupId>
| <artifactId>spring-context</artifactId>
| <version>5.2.8.RELEASE</version>
| </dependency>
-------------------------------------------------------------------------------
(2)在resources目录创建applicationContext.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"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<!--添加自定义bean组件-->
</beans>
-------------------------------------------------------------------------------
4.3 添加日志支持
要了解springframework的IoC容器的实现,需要清楚IoC容器中各模块之间的调用关系,而通过引入日志系统logback、定义日志输出配置方式,
实现框架内部各模块日志信息的输出,开发者分析日志信息从而了解模块与模块之间的调用顺序。springframework自5.0版本开始,内置实现日志桥接功能的模块spring-jcl,
开发者需要将logback或者log4j2.x放在classpath路径即可。添加日志支持包括:
(1)在pom.xml添加logback的maven仓库dependency。在本示例中,引入日志组件logback在pom.xml的配置内容如下:
-------------------------------------------------------------------------------
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-core -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.4.10</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.4.10</version>
</dependency>
-------------------------------------------------------------------------------
(2)在resources目录创建logback日志配置文件logback.xml。在本示例中,logback.xml的配置内容如下:
-------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
<!--自定义Logger-->
</configuration>
-------------------------------------------------------------------------------
理解logback.xml各配置项(如appender、pattern等)内容需要参阅log4j-users-guide.pdf和logback-中文手册。
4.4 编写程序主类App,使用日志方式输出"Hello world!"字符串到控制台(Console),输出内容格式:
-------------------------------------------------------------------------------
11:27:21.674 [main] INFO com.gxuwz.App - Hello World!