一、项目创建:
1. 通过File->New Project
来创建一个项目
2. 选择通过Spring Initializr
来创建一个SpringBoot应用
3. 填写好Maven项目的groupId
和artifactId
及选择好Java版本
- Group 和 Artifact的含义:
Group一般分为多个段,第一段为域,第二段为公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。
Artifact是指项目名称
举例:apache公司的tomcat项目,这个项目的groupId是org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache,Artifact是tomcat。
此处我的Group为cn.wpy。cn是中国缩写,wpy是我的名字
- Java Version主流选择 8
- 更改Artifact,Name会自动跟着变
4. 选择好起步依赖,这里选择的是开启Web功能的起步依赖
- 起步依赖如果多选或少选该怎么办?
创建完成后,找到 pom.xml 文件,在这里面手动添加依赖
- 起步依赖的作用?
起步依赖的作用就是让依赖的添加更加便捷,毕竟点一下鼠标就可以添加
Spring项目的话,我们需要添加很多依赖,还需要考虑各个依赖版本的兼容性问题,是个相当麻烦的事情,起步依赖则不需要考虑版本的兼容问题
5. 选择好项目的存放位置即可顺利创建一个SpringBoot应用。
Project name会跟随前面步骤中Artifact的内容改变
6. 创建完成
二、 查看项目结构:
1. 应用启动类(XXXXApplication)
- 启动类的名称
不同的项目名称的启动类名称不一样(启动类名称是springboot自动生成)。举例:我的项目名称叫mallstudy,所以启动类的名称就自动生成为MallStudyApplication。
@SpringBootApplication的作用、SpringApplication.run的作用
@SpringBootApplication // 通过@SpringBootApplication注解开启组件扫描和自动配置
public class MallStudyApplication {
//通过SpringApplication.run()引导应用程序启动;
public static void main(String[] args) {
SpringApplication.run(MallStudyApplication.class, args);
}
}
- @SpringBootApplication详解
@SpringBootApplication
注解是三个注解的结合体,拥有以下三个注解的功能:
-
@Configuration
:用于声明Spring中的Java配置; -
@ComponentScan
:启用组件扫描,当我们声明组件时,会自动发现并注册为Spring应用上下文中的Bean;扫包范围:当前启动类同级包或者子包下面 -
@EnableAutoConfiguration
:开启SpringBoot自动配置功能,简化配置编写。
- SpringBoot的三种启动方式:
第一种:在类的上面添加@EnableAutoConfiguration,写一个main,main里面写SpringApplication.run(HelloController.class,args); HelloController是这个类的名称。此方法只能加载这一个类,不能加载其他类,效果不好。
@EnableAutoConfiguration注解作用:让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置。这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring。由于spring-boot-starter-web添加了Tomcat和Spring MVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置。
第二种: 在第一种方法的基础上添加:@ComponentScan(basePackages = "com.mayikt.controller")添加在类的上面,com.mayikt.controller指的是这个类所在的包,这句话的意思是扫描这个包下面的所以类,使之注入springboot的容器中,缺点:每次都要写两个注解,有点冗余。且springboot官方建议单独建一个启动类
第三种:建一个单独启动类,在类名上面添加@SpringBootApplication,@SpringBootApplication
被 @Configuration、@EnableAutoConfiguration、@ComponentScan 注解所修饰,换言之 Springboot 提供了统一的注解来替代以上三个注解。写main方法同第一种的写法。扫包范围:当前启动类同级包或者子包下面。
2. 资源目录(resources)
- 项目配置文件
resources/application.properties
- 静态资源目录
resources/static/ 用于存放html、css、js、图片等资源
- 视图模板目录
resources/templates/ 用于存放jsp、thymeleaf等模板文件
- mybatis映射文件
resources/mapper/ 新建的springboot结构中没有,需要自己手动建立,用于mybatis项目
- mybatis配置文件
resources/mapper/config/ 新建的springboot结构中没有,需要自己手动建立,用于mybatis项目
- 如何访问资源?
我们可以在src/main/resources/static位置放置一个图片文件(D.jpg)。启动程序后,尝试访问http://localhost:8080/D.jpg。如能显示图片,配置成功。
3. springboot配置文件(application.properties)
- 配置文件类型
配置文件类型application.properties和application.yml
.properties写法:有点冗余
wpy.name = wpy
wpy.age = 21
yml写法:在企业中使用此方式较多
wpy:
name: wpy
age: 21
4. Maven构建文件(pom.xml)
- 前面起步依赖点击的spring web,在pom.xml中显示如下图
- spring-boot-starter-parent的作用
SpringBoot项目可以使用Maven进行构建,首先我们需要继承spring-boot-starter-parent
这个父依赖,父依赖可以控制所有SpringBoot官方起步依赖的版本,接下来当我们使用官方起步依赖时,就不用指定版本号了(需要注意的是只有官方的起步依赖不需要指定版本号,其他的还是需要自行指定的。)
- spring-boot-maven-plugin的作用 主要用于将应用打包为可执行Jar
- 如何添加其他依赖?
<dependencies>
<!--SpringBoot Web功能起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--MyBatis分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
<!--集成druid连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<!--Mysql数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<!--springfox swagger官方Starter-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>
- 如何除掉起步依赖中不想用的库
你不想使用tomcat容器,想使用undertow容器,可以在Web功能依赖中排除掉tomcat。
<dependencies>
<!--SpringBoot Web功能起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<!--排除tomcat依赖-->
<exclusion>
<artifactId>spring-boot-starter-tomcat</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
<!--undertow容器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
</dependencies>