Spring boot快速使用概括

104 阅读3分钟

Spring简介

使用boot之前先简单说一下spring历史 刚刚学习java的时候代码的对象需要new一个实例使用。有的人觉得new太麻烦。spring解决了这个问题,使用spring都配置过xml文件,写入需要加载哪些bean。但是对于一个服务通常需要加载的类或者默认配置是固定的。例如我们需要使用redis。那么可以在xml文件里面增加redisTemplate和相关的配置。很多地方使用需要很多相同的代码,是否可以提供一个方式仅需导入一个依赖包,redis需要加载的实例和默认配置都完成呢。boot可以做到。

创建boot工程

下面简单说一下如何使用boot帮助我们实现,首先通过spring 网站创建一个Spring boot 的maven工程,然后在pom文件里面增加任意starter依赖包,例如

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

加入之后我们可以观察一下引入的包主要有:springframework-spring、springframwork-boot下的boot-autoconfigure包。还有starter-tomcat、start-web等 对于Springframwork-spring包很好理解,因为boot毕竟是依赖spring注入实例。重点关注一下autoconfigure包,上面说的各种服务需要的实例(例如redisTemplage等)都在这个里面配置,注意一点,仅仅是配置,没有真的引入依赖包。看一下包的代码,重点关注以AutoConfiguration结尾的类。这里是服务需要的各种加载的实例和默认配置。但是没有实例的依赖包。实例的依赖包就在各种start里面配置的。例如redis-start包括redis的依赖包,然后spring根据configuration的配置扫描加载类。 知道了上面的流程之后使用boot就很容易了,首先导入boot-autoConfigure包,然后想使用那个服务就在Spring boot官网查相关的start写入pom文件就可以了。注意main方法上面需要有springbootApplocation注解(通过网站自动创建的代码已经包括了)。 总结一下:boot-autoconfigure是服务启动需要的实例和配置,starter里面是服务具体的实现类。boot根据boot-autoconfigure的配置去加载starter里面的实例。

写一个starter

了解原理我们就可以自己写starter,之后在boot工程里面增加一个configuration类就可以通过boot加载我们自己的starter了。例如:

@Configuration
@ComponentScan(basePackages = {"com.abc"})
public class AutoloadConfiguration {

@bean
public ABC getABC() {
 return new ABC();
}
}

然后写一个ABC-starter,里面是ABC的实现类就可以了。就是这么简单。 spring在具体实现的时候分层会多一些,例如starter里面会引入spring--,例如:Spring-data-,spring-amqp-,spring-data-redis里面包括所有的redis依赖包和接口的封装。所以starter里面只要一个pom文件把需要依赖的实现类引入就可以了。注意:spring5之后都改成gradle编译了。所以引入的是build.gradle文件。 最后梳理一下:boot-autoconfigure是需要注入的服务bean的配置bean,starter是一个引入包的聚合(把依赖包写到编译的配置文件,mavne就是pom,gradle就是guild.gradle等),spring会把一些主流的服务封装成spring-data—***、Spring-amqp-等。spring--***里面就是包括具体服务实现类。