一. 配置不继承SpringBoot父依赖项目
在真实的企业级项目中,一个大的项目会由多个子模块组成,每个模块是一个小的项目,那么每个模块都有自己的父项目,这个时候就不能再依赖spring
提供的父项目了,这时候怎么办呢?spring
boot
已经考虑到了这种可能性,下面就来看看怎么解决的。
单一模块的时候,我们会看到我们的Spring
Boot
项目有个parent
依赖,如下所示:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.5.RELEASE</version>
<relativePath />
</parent>
在真实的企业级项目中,这部分内容被我们自己的父模块占用了,比如变成了如下:
<parent>
<groupId>org.light4j</groupId>
<artifactId>springBoot-basic</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
这个时候,只需要加如下依赖即可解决原来依赖Spring
Boot
的parent
的问题:
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.4.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
别的部分不需要变动,后面的内容都按照这种方式来进行。
二. 入口类和@SpringBootApplication
Spring Boot
通常有一个名为*Application
的入口类,入口类里面有一个main
方法,这个main
方法其实就是一个标准的Java
应用的入口。在main
方法中使用SpringApplication.run(HelloApplication.class, args)
,启动Spring Boot
应用项目。
@SpringBootApplication
是Spring Boot
的核心注解,它是一个组合注解,对组合注解不了解的朋友可以看前面的文章Spring4.x高级话题(五):组合注解与元注解,SpringBootApplication
源码如下:
@Target({java.lang.annotation.ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Configuration
@EnableAutoConfiguration
@ComponentScan
public @interface SpringBootApplication
{
public abstract Class<?>[] exclude();
public abstract String[] excludeName();
}
@SpringBootApplication
注解主要组合了@Configuration
,@EnableAutoConfiguration
,@ComponentScan
;若不使用@SpringBootApplication
注解,则可以在入口类上直接使用@Configuration
,@EnableAutoConfiguration
,@ComponentScan
三个注解的效果是一样的。
其中@EnableAutoConfiguration
让Spring
Boot
根据类路径中的jar
包依赖为当前项目进行自动配置。
例如,添加了spring-boot-starter-web
依赖,会自动添加Tomcat
和Spring MVC
的依赖,那么Spring
Boot
会对Tomcat
和Spring MVC
进行自动配置。
又如,添加了spring-boot-starter-jpa
依赖,Spring
Boot
会自动进行JPA
相关的配置。
Spring Boot
会自动扫描@SpringBootApplication
所在类的同级包(如org.light4j.springboot.config
)以及下级包里面的Bean
(若为JPA
项目还可以扫描标注@Entity
的实体类)。建议入口类放置在groupId+arctifactID
组合的包名下。
三. 关闭特定的自动配置
通过上面的@SpringBootApplication
的源码可以看出,关闭特定的自动配置应该使用@SpringBootApplication
注解的exclude
参数,比如要关闭Spring
Boot
对数据源的自动配置,则可以这样使用,例如:
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
四. 定制Banner
1. 修改Banner
在Spring Boot
启动的时候会有一个默认启动方案,如下图所示:
如果想把这个图案修改成自己的,步骤如下所示:
(1). 在
src/main/resources
下新建一个banner.txt
。
(2). 通过http://patorjk.com/software/taag网站生成字符,如敲入的为"LONGJIAZUO"
,将网站生成的字符复制到banner.txt
中。
(3). 这时再启动程序,图案将变为如下图所示:
五. 关闭banner
1. 入口类main
方法里的内容修改为:
SpringApplication application = new SpringApplication(HelloApplication.class);
application.setBannerMode(Banner.Mode.OFF);
application.run(args);
2. 或者使用fluent API
修改为:
new SpringApplicationBuilder(HelloApplication.class).bannerMode(Banner.Mode.OFF).run(args);
六. 源代码示例:
公众号ID:longjiazuoA

未经允许不得转载:人生设计师 » Spring Boot核心(一):Spring Boot的基本配置