Starter添加项目依赖
Starter组件将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中,简化项目中maven依赖;
例如,如果使用传统Spring构建一个web项目时我们需要导入以下几个依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.2.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
在SpringBoot项目中, 搭建web项目只需要继承spring-boot-starter-parent,并添加一个依赖即可:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
这个Starter依赖集成了web环境需要的jar包依赖,相当于是对常用的依赖进行一次封装,而我们也无需关心因过多依赖重复的jar包而导致的冲突问题:
常用的Starter组件有:
spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支持
spring-boot-starter-data-jpa 数据库支持
spring-boot-starter-data-redis redis数据库支持
spring-boot-starter-data-solr solr支持
mybatis-spring-boot-starter 第三方的mybatis集成starter
手写Starter组件:
1.构建独立的maven项目,命名如:oceanli-spring-boot-starter
2.添加spring相关依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.3.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>2.3.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>2.3.1.RELEASE</version>
</dependency>
3.创建实体Bean和从配置文件读取的properties类:
public class User {
private String username;
private String password;
private int sex;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
}
@ConfigurationProperties(prefix = "com.oceanli")
public class OceanliProperties {
private String username;
private String password;
private int sex;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
}
4.编写自动配置类:
@Configuration
@EnableConfigurationProperties(value = {OceanliProperties.class})
public class OceanliAutoConfiguration {
@Bean
public User user(OceanliProperties oceanliProperties) {
User user = new User();
user.setUsername(oceanliProperties.getUsername());
user.setPassword(oceanliProperties.getPassword());
user.setSex(oceanliProperties.getSex());
return user;
}
}
5.创建META-INFO/spring.factories文件,将自动配置类放入其中:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.oceanli.configuration.OceanliAutoConfiguration
6.打包发布jar包,starter组件开发完成。
7.测试,在另外的工程中引入oceanli-spring-boot-starter的jar包,在配置文件application.properties中配置如下:
com.oceanli.username=aaa
com.oceanli.password=456
com.oceanli.sex=18
运行项目,查看是否可以成功注入oceanli-spring-boot-starter中的bean—User,它的配置属性是否生效。