一、环境搭建
SpringBoot项目搭建
- 访问 http://start.spring.io/
- 选择构建工具 Maven Project、Java、Spring Boot版本以及其它的信息。设置好之后,点击GENERATE下载项目压缩包。
- 我使用的是Eclipse,可以File->Import->Existing Maven Project->next->选择解压后的文件夹->Finsh,成功导入到自己的工程中。
- 导入之后可能会有红叉叉,pom.xml文件第一行出现Unknown错误,这个可能是maven插件和eclispe不兼容的原因(ps:也可以忽略,不影响整体运行)
这样Spring Boot的环境就搭建好啦,是不是很简单。
二、配置及分析
如上图所示:Spring boot的基础结构有三个文件目录:
- src/main/java:程序开发以及主程序入口
- src/main/resources:配置文件
- src/test/java:测试程序
1)我们可以看到在src/main/java下有一个SchoolApplication.java文件,这是程序入口类SchoolApplication。在Springboot项目中我们可以通过main方法启动项目,在需要启动的主类中我们需要加入@SpringBootApplication这个注解,告诉spring boot,这个是程序的入口。
其中
@SpringBootApplication
是一个复合注解,包括@ComponentScan
,@SpringBootConfiguration
,@EnableAutoConfiguration
。
- @SpringBootConfiguration继承自@Configuration,二者功能也一致,标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中,并且实例名就是方法名。
- @EnableAutoConfiguration的作用启动自动的配置,@EnableAutoConfiguration注解的意思就是Springboot根据你添加的jar包来配置你项目的默认配置,比如根据spring-boot-starter-web,来判断你的项目是否需要添加了webmvc和tomcat,就会自动的帮你配置web项目中所需要的默认配置。
- @ComponentScan扫描当前包及其子包下被@Component,@Controller,@Service,@Repository注解标记的类并纳入到spring容器中进行管理。是以前的context:component-scan(以前使用在xml中使用的标签,用来扫描包配置的平行支持)。
这篇相关分析写的不错,可以看看:简明易理解的@SpringBootApplication注解源码解析(包含面试提问)
2)src/main/resources下有个application.properties文件。
默认创建spring-boot项目后,会在resources目录下生成一个空的application.properties配置文件,springboot启动时加载该配置文件。
application.properties(或者application.yml)中包含系统属性、环境变量、命令参数这类信息。
我的文件配置如下:
spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp
#项目端口配置
#spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db_test?useSSL=false&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=12345678
spring.datasource.initialSize=20
spring.datasource.minIdle=50
spring.datasource.maxActive=500
#Mysql数据源配置
server.port=8888
server.servlet.context-path=/schoolSystem
#jpa
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql= true
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
这里有一篇文章是关于Spring Boot
之Application.properties配置大全。不需要记忆,要用什么配置,直接查一下就好了,嘿嘿,很适合我这种记性不好的人。
或者能力强的人直接看官方文档:Spring Boot Reference Documentation
3)src/test/java下可以进行一些测试。当运行 Spring Boot 应用程序测试时,它会自动的从当前测试类所在的包起一层一层向上搜索,直到找到一个@SpringBootApplication或@SpringBootConfiguration注释类为止。以此来确定如何装载 Spring 应用程序的上下文资源。只要你以合理的方式组织你的代码,你项目的主配置通常是可以被发现的。
4)有关pom.xml文件。
POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。
该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。事实上,在Maven世界中,project可以什么都没有,甚至没有代码,但是必须包含pom.xml文件。
我的pom.xml文件如下,这些都是为后面做的项目做基础哦。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.hh</groupId>
<artifactId>School</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>School</name>
<description>Demo project for School Management System</description>
<properties>
<java.version>11</java.version>
<!-- <java-jar-plugin.version>3.1.1</java-jar-plugin.version>-->
</properties>
<dependencies>
<!-- pom.xml 文件中默认有两个模块:
spring-boot-starter :核心模块,包括自动配置支持、日志和 YAML,如果引入了 spring-boot-starter-web web 模块可以去掉此配置,因为 spring-boot-starter-web 自动依赖了 spring-boot-starter。
spring-boot-starter-test :测试模块,包括 JUnit、Hamcrest、Mockito。 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- pom.xml中添加支持web的模块 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- servlet依赖. -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!-- tomcat的支持.-->
<!-- 添加如下包对JSP进行编译 包tomcat-embed-jasper被标记为已提供(provided),
因此表明我们希望JDK或容器在运行时提供依赖项,该作用域仅在编译和测试类路径上可用,并且不可传递-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provide</scope>
</dependency>
<!-- mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version><!--$NO-MVN-MAN-VER$--><!-- 我装的是8.0.19版本-->
</dependency>
<!-- jpa-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
转载:https://blog.csdn.net/weixin_34566605/article/details/105928048