目录
起步依赖(Starter)是Spring Boot提供的一种依赖管理机制,用于简化项目的依赖配置和版本冲突问题。
起步依赖实际上是一组相关的依赖的集合,它们被打包成一个单独的依赖,可以一次性引入到项目中。起步依赖中包含了常用的依赖和配置,可以快速地启动和配置相应的功能。
在使用Spring Boot时,可以通过在项目的pom.xml文件中引入起步依赖来简化依赖配置。只需要引入相应的起步依赖,Spring Boot会自动管理和加载所需的依赖。
起步依赖的命名通常遵循一定的规则,例如spring-boot-starter-web用于启动Web应用,spring-boot-starter-data-jpa用于启动使用JPA进行数据持久化的应用等。每个起步依赖都有明确的功能和用途。
通过使用起步依赖,开发人员可以快速构建和配置Spring Boot应用,减少了手动配置和版本冲突的问题,提高了开发效率。同时,起步依赖也提供了一致性和可维护性,使得项目的依赖管理更加简单和可靠。

spring-boot-starter-{name},其中,{name}是起步依赖的名称,用于描述该起步依赖所提供的功能或模块。一般情况下,{name}应该是一个简短、清晰的描述词,以表明该起步依赖的用途。例如,常见的Spring Boot起步依赖命名规范如下:


- package com.aliyun.oss;
-
- import org.springframework.web.multipart.MultipartFile;
-
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.UUID;
-
- /**
- * 阿里云 OSS 工具类
- */
-
- public class AliOSSUtils {
-
-
- // // todo 指定OSS服务地址
- // @Value("${aliyun.oss.endpoint}")
- // private String endpoint;
- // // todo 设置密钥账号和密码
- // @Value("${aliyun.oss.accessKeyId}")
- // private String accessKeyId;
- // @Value("aliyun.oss.accessKeySecret")
- // private String accessKeySecret;
- // // todo 设置文件存储buket
- // @Value("aliyun.oss.bucketName")
- // private String bucketName;
- // todo 注入实体类对象
- private AliOSSProperties aliOSSProperties;
-
- public AliOSSProperties getAliOSSProperties() {
- return aliOSSProperties;
- }
-
- public void setAliOSSProperties(AliOSSProperties aliOSSProperties) {
- this.aliOSSProperties = aliOSSProperties;
- }
-
- /**
- * 实现上传图片到OSS
- */
- public String upload(MultipartFile file) throws IOException {
- // todo 获取已经封装了的属性值
- String endpoint = aliOSSProperties.getEndpoint();
- String accessKeyId = aliOSSProperties.getAccessKeyId();
- String accessKeySecret = aliOSSProperties.getAccessKeySecret();
- String bucketName = aliOSSProperties.getBucketName();
- // 获取上传的文件的输入流
- InputStream inputStream = file.getInputStream();
-
- // 避免文件覆盖
- String originalFilename = file.getOriginalFilename();
- String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));
-
- //上传文件到 OSS
- OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
- ossClient.putObject(bucketName, fileName, inputStream);
-
- //文件访问路径
- String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;
- // 关闭ossClient
- ossClient.shutdown();
- return url;// 把上传到oss的路径返回
- }
-
- }
AliOSSProperties类
- package com.aliyun.oss;
-
- import org.springframework.boot.context.properties.ConfigurationProperties;
-
- @ConfigurationProperties(prefix = "aliyun.oss") // 设置属性前缀,便于找到对应在yml映射文件中的属性位置
- public class AliOSSProperties {
- private String endpoint;
- private String accessKeyId;
- private String accessKeySecret;
- private String bucketName;
-
- public String getEndpoint() {
- return endpoint;
- }
-
- public void setEndpoint(String endpoint) {
- this.endpoint = endpoint;
- }
-
- public String getAccessKeyId() {
- return accessKeyId;
- }
-
- public void setAccessKeyId(String accessKeyId) {
- this.accessKeyId = accessKeyId;
- }
-
- public String getAccessKeySecret() {
- return accessKeySecret;
- }
-
- public void setAccessKeySecret(String accessKeySecret) {
- this.accessKeySecret = accessKeySecret;
- }
-
- public String getBucketName() {
- return bucketName;
- }
-
- public void setBucketName(String bucketName) {
- this.bucketName = bucketName;
- }
- }
- package com.aliyun.oss;
-
- import org.springframework.boot.context.properties.EnableConfigurationProperties;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
-
- @Configuration
- @EnableConfigurationProperties(AliOSSProperties.class) // todo 将该类注入IOC容器,成为其中过的bean对象
- public class AliOSSAutoConfiguration {
- @Bean
- public AliOSSUtils aliOSSUtils(AliOSSProperties aliOSSProperties) {
- AliOSSUtils aliOSSUtils = new AliOSSUtils();
- aliOSSUtils.setAliOSSProperties(aliOSSProperties);
- return aliOSSUtils;
- }
- }
META-INF/spring/xxxx.imports文件(设置自动配置类的全类名)
com.aliyun.oss.AliOSSAutoConfiguration