第一步:创建一个maven项目,如下。
第二步:继承SpringBoot工程。引入核心依赖。
<!-- 指定一些默认属性 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<java.version>1.8</java.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<!-- 选用稳定、够新的版本即可 -->
<version>2.1.0.RELEASE</version>
<relativePath />
</parent>
<dependencies>
<!-- web模块包 引入之后就可以直接进行web服务开发.里面包含了tomcat、spring和springMVC等 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
可以尝试注释掉"spring-boot-starter-web"依赖,可以发现无法使用任何spring或者springMVC的类或注解。即可以证明"spring-boot-starter-web"的作用。也可证明,springboot不是一个新的框架,只是将其他框架的功能整合在一起,为我们提供一个"开箱即用"的环境。
第三步:编写配置文件及启动项目入口
springboot遵循"约定优先配置"的原则,使用springboot只需很少的配置,大部分的时候直接使用默认配置即可(并不是没有配置)。
1、加载默认的配置文件。在/src/main/resource/路径下,创建一个application.properties文件。如下:
# 默认加载8080
server.port=9999
说明:除了xxx.properties文件格式,还支持xxx.yml文件格式。配置也不仅仅只有server.port这一项。
2、在任意包路径下创建一个启动类(类名任意),如下
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
至此,就可以启动一个springboot项目了。接着就可以直接在项目中写熟悉的controller、service、mapper等。
注意:其他组件,比如controller层、service层、dao层、配置层等使用到spring功能的类,一定要属于启动类App.class所在包或其子包。因为启动类默认扫描装配的是其所在的包及子包,否则需要在启动注解@SpringBootApplication上指定扫描的包,spring才能将其装配。包结构示例如下:
指定扫描其他路径示例如下:
@SpringBootApplication(scanBasePackages = {"com.zepal","其它"})
// 如果在@SpringBootApplication上指定了扫描路径,则不用单独使用@ComponentScan指定了
// @SpringBootApplication是一个组合注解,包含了@ComponentScan
// 功能和spring中的<context:component-scan>标签功能相同
// basePackages属性是数组值,支持通配符
// @ComponentScan(basePackages = "com.zepal")
加载其他路径的配置文件
上述方式使用的是默认加载/src/main/resource/路径下配置文件。除此之外,springboot还可以指定加载其他路径的配置文件。
将springboot打包成一个可执行的jar包之后。执行启动命令指定。如下:
// 指定配置文件的路径是绝对路径.可任意命名
java -jar xxx.jar --spring.config.location=D:\config\xxx.properties
springboot加载配置文件的方式一共有五种,以下按照优先级排列:
1、启动可执行jar包指定配置文件,可以自定义命名配置文件;
2、在可执行jar包文件的同目录下建一个config文件夹,将配置文件放到该文件夹,需要命名为application.properties(application.yml);
3、直接将配置文件放到jar包的同目录下,需要命名为application.properties;
4、在项目的/src/main/resource/路径下建一个config文件夹,将配置文件放到该目录下,需要命名为application.properties(application.yml);
5、在项目的/src/main/resource/路径下,直接创建一个配置文件,需要命名为application.properties(application.yml),即上述方式。
其实为了减少麻烦,或者说统一所有springboot使用者的习惯,还是建议用第4种或者第5种方式。
创建不同环境的配置文件
在开发应用时,通常有开发环境、测试环境、生产环境等。其中每个环境都有自己的配置信息,比如端口、数据库连接、MQ连接、redis连接等。如果每次换一个环境就需要改动一次,相对较麻烦还容易出错。那么,我们就可以直接创建出不同环境的配置信息,然后在不同的环境中指定相应的配置文件即可。(以下用xxx.properties说明,xxx.yml同样支持)
多环境的配置文件命名需要满足,application-{profile}.properties的格式(${profile}对应环境标识)。示例如下:
application-dev.properties:开发环境
application-test.properties:测试环境
application-prod.properties:生产环境
至于具体加载哪一个环境的配置文件,需要在配置文件中通过spring.profiles.active配置项去指定。如下:
# 配置项的值对应配置文件名的{profile}。test、dev、prod
spring.profiles.active=test
上述配置则会加载application-test.properties。此方式是通过application.properties为主配置文件,去加载了不同环境的差异信息,不然鬼知道该去哪里加载spring.profiles.active这个属性。比如:application-dev加载127.0.0.1机器的数据库,application-test加载127.0.0.2机器的数据库。那么通过spring.profiles.active制定不同的配置文件后,就可以加载不同的数据库连接信息了。
同样,也可以在打包后,启动jar时通过spring.profiles.active指定。如下:
java -jar xxx.jar --spring.profiles.active=prod
那么,就可以加载application-prod.properties文件了,这种方式不需要application.properties为主文件。
问题来了,这种方式好像和通过"java -jar xxx.jar --spring.config.location=D:\config\xxx.properties"指定任意配置文件,是一样的功能。画蛇添足,无解。
定制自己的启动图标(banner),骚
springboot启动时,原图标如下:
第一步:创建一个banner.txt文件。并输入任意信息。比如输入:hello zepal。
第二步:将banner.txt放入项目的/src/main/resource/路径下。
启动之后就可以看到banner.txt中的信息。如下:
当然,还可以定制艺术字体。访问工具网站:http://patorjk.com/software/taag。
重复上述步骤,再启动应用,效果如下:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------不积跬步无以至千里