SpringBootApplication 注解
Spring Boot 的核心注解,它是一个组合注解,主要组合了 @SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan。 其中,@EnableAutoConfiguration 让 Spring Boot 根据类路径中的 Jar 包依赖为当前项目进行自动配置。 例如,添加了 spring-boot-starter-web 依赖,会自动添加 Tomcat 和 Spring MVC 的依赖,那么 Spring Boot 会对 Tomcat 和 Spring MVC进行自动配置。 Spring Boot 会自动扫描 @SpringBootApplication 所在类的同级包以及下级包里的 Bean,建议入口类放置的位置在 groupId+arctifactID 组合的包名下。
定制 Banner
在 Spring Boot 启动的时候会有一个默认启动图案,如下图所示。
在 src/main/resources 下新建一个 banner.txt。
通过 http://patorjk.com/software/taag 网站生成字符,如敲入的为”YJW”,将网站生成的字符复制到 banner.txt 中。
这时再启动程序,图案将变成下图所示。
关闭 banner
main 方法里的内容修改为:
SpringApplication app = new SpringApplication(Application.class);
app.setBannerMode(Banner.Mode.OFF);
app.run(args);
或使用 fluent API 修改为:
new SpringApplicationBuilder(Application.class)
.bannerMode(Banner.Mode.OFF)
.run(args);
全局配置文件(application.properties or application.yml)
Spring Boot 使用一个全局的配置文件 application.properties 或 application.yml,放置在 src/main/resources 目录或者类路径的 /config 下。
Spring Boot 的全局配置文件的作用是对一些默认配置的配置值进行修改,增加一些自定义配置。
starter pom
Spring Boot 官方为我们提供如下表所示的 starter pom
名称 | 描述 |
---|---|
spring-boot-starter | 核心Spring Boot starter,包括自动配置支持,日志和YAML |
spring-boot-starter-actuator | 生产准备的特性,用于帮你监控和管理应用 |
spring-boot-starter-amqp | 对”高级消息队列协议”的支持,通过spring-rabbit实现 |
spring-boot-starter-aop | 对面向切面编程的支持,包括spring-aop和AspectJ |
spring-boot-starter-batch | 对Spring Batch的支持,包括HSQLDB数据库 |
spring-boot-starter-cloud-connectors | 对Spring Cloud Connectors的支持,简化在云平台下(例如,Cloud Foundry 和Heroku)服务的连接 |
spring-boot-starter-data-elasticsearch | 对Elasticsearch搜索和分析引擎的支持,包括spring-data-elasticsearch |
spring-boot-starter-data-gemfire | 对GemFire分布式数据存储的支持,包括spring-data-gemfire |
spring-boot-starter-data-jpa | 对”Java持久化API”的支持,包括spring-data-jpa,spring-orm和Hibernate |
spring-boot-starter-data-mongodb | 对MongoDB NOSQL数据库的支持,包括spring-data-mongodb |
spring-boot-starter-data-rest | 对通过REST暴露Spring Data仓库的支持,通过spring-data-rest-webmvc实现 |
spring-boot-starter-data-solr | 对Apache Solr搜索平台的支持,包括spring-data-solr |
spring-boot-starter-freemarker | 对FreeMarker模板引擎的支持 |
spring-boot-starter-groovy-templates | 对Groovy模板引擎的支持 |
spring-boot-starter-hateoas | 对基于HATEOAS的RESTful服务的支持,通过spring-hateoas实现 |
spring-boot-starter-hornetq | 对”Java消息服务API”的支持,通过HornetQ实现 |
spring-boot-starter-integration | 对普通spring-integration模块的支持 |
spring-boot-starter-jdbc | 对JDBC数据库的支持 |
spring-boot-starter-jersey | 对Jersey RESTful Web服务框架的支持 |
spring-boot-starter-jta-atomikos | 对JTA分布式事务的支持,通过Atomikos实现 |
spring-boot-starter-jta-bitronix | 对JTA分布式事务的支持,通过Bitronix实现 |
spring-boot-starter-mail | 对javax.mail的支持 |
spring-boot-starter-mobile | 对spring-mobile的支持 |
spring-boot-starter-mustache | 对Mustache模板引擎的支持 |
spring-boot-starter-redis | 对REDIS键值数据存储的支持,包括 spring-redis |
spring-boot-starter-security | 对spring-security的支持 |
spring-boot-starter-social-facebook | 对spring-social-facebook的支持 |
spring-boot-starter-social-linkedin | 对spring-social-linkedin的支持 |
spring-boot-starter-social-twitter | 对spring-social-twitter的支持 |
spring-boot-starter-test | 对常用测试依赖的支持,包括JUnit, Hamcrest和Mockito,还有spring-test模块 |
spring-boot-starter-thymeleaf | 对Thymeleaf模板引擎的支持,包括和Spring的集成 |
spring-boot-starter-velocity | 对Velocity模板引擎的支持 |
spring-boot-starter-web | 对全栈web开发的支持,包括Tomcat和spring-webmvc |
spring-boot-starter-websocket | 对WebSocket开发的支持 |
spring-boot-starter-ws | 对Spring Web服务的支持 |
使用 XML 配置
有一些特殊场景,需要使用 XML 配置,可以通过 Spring 提供的 @ImportResource 来加载 XML 配置
@ImportResource({"classpath:spring-context.xml", "classpath:spring-mvc.xml"})
命令行参数配置
Spring Boot 可以是基于 Jar 包运行的,打成 Jar 包的程序可以直接通过下面命令运行:
java -jar xx.jar
可以通过以下命令修改 Tomcat 端口号:
java -jar xx.jar --server.port=9090
可以设置多环境配置
java -jar xx.jar --spring.profiles.active=dev --server.port=9090
Profile 配置
Profile 是 Spring 用来针对不同的环境对不同的配置提供支持的,全局 Profile 配置使用 application-{profile}.properties(如 application-prod.properties)。 通过在 application.properties 中设置 spring.profiles.active=prod 来指定活动的 Profile。 比如我们生产环境(prod)使用端口号为80,开发环境(dev)使用端口号为 8888。生产和开发环境下的配置文件如下:application-prod.properties:
server.port=80
application-dev.properties:
server.port=8888
开发环境运行时在 application.properties 文件中增加如下配置:
spring.profiles.active=dev
生产环境运行时在 application.properties 文件中增加如下配置:
spring.profiles.active=prod