SpringBoot 手写 Starter
1.介绍
SpringBoot中的starter是一种非常重要的机制,能够抛弃以前繁杂的配置,将其统一集成进starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置。starter让我们摆脱了各种依赖库的处理,需要配置各种信息的困扰。SpringBoot会自动通过classpath路径下的类发现需要的Bean,并注册进IOC容器。SpringBoot提供了针对日常企业应用研发各种场景的spring-boot-starter依赖模块。所有这些依赖模块都遵循着约定成俗的默认配置,并允许我们调整这些配置,即遵循“约定大于配置”的理念。
优点
一般认为,SpringBoot 微框架从两个主要层面影响 Spring 社区的开发者们:
-
基于 Spring 框架的“约定优先于配置(COC)”理念以及最佳实践之路。
-
提供了针对日常企业应用研发各种场景的 spring-boot-starter 自动配置依赖模块,如此多“开箱即用”的依赖模块,使得开发各种场景的 Spring 应用更加快速和高效。
SpringBoot 提供的这些“开箱即用”的依赖模块都约定以 spring-boot-starter- 作为命名的前缀,并且皆位于 org.springframework.boot 包或者命名空间下(虽然 SpringBoot 的官方参考文档中提到不建议大家使用 spring-boot-starter- 来命名自己写的类似的自动配置依赖模块,但实际上,配合不同的 groupId,这不应该是什么问题)。
2.starter自定义
springboot 官方建议springboot官方推出的starter 以spring-boot-starter-xxx的格式来命名,第三方开发者自定义的starter则以xxxx-spring-boot-starter的规则来命名,事实上,很多开发者在自定义starter的时候往往会忽略这个东西。
自定义一个登录拦截的启动器,authority-spring-boot-starter
开发步骤:
2.1新建工程
引入以下依赖:
<!--自定义启动器 必须依赖的包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
2.2创建登录拦截器
import org.springframework.web.servlet.HandlerInterceptor;
public class AuthorityInteceptor implements HandlerInterceptor {
public boolean preHandle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler) throws Exception {
System.out.println("-------------------同志你被拦截了 -------------");
return true;
}
}
2.3创建属性绑定文件
@ConfigurationProperties(prefix = "spring.auth")
@Data
public class AuthorityProperties {
/**
* 是否启用
*/
boolean enabled;
/**
* 拦截的路径
*/
String pathPatterns;
/**
* 不拦截的路径
*/
String excludePathPatterns;
}
2.4注册拦截器
//@EnableConfigurationProperties(AuthorityProperties.class)
@Order( Ordered.HIGHEST_PRECEDENCE)
@Import(AuthorityProperties.class)
public class WebConfig implements WebMvcConfigurer {
@Autowired
private AuthorityProperties properties;
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new AuthorityInteceptor())
.addPathPatterns(properties.getPathPatterns())
.excludePathPatterns(properties.getExcludePathPatterns());
}
}
2.5创建自动配置类AuthorityAutoConfigruation
@ConditionalOnProperty(
prefix = "spring.auth",
value = "enabled",
havingValue = "true",
matchIfMissing = false
)
@Import({WebConfig.class})
public class AuthorityAutoConfigruation {
}
2.5配置自动配置
在resourecs文件目录下创建META-INF,并创建我们自己的spring.factories,并把我们的 MemberStaterAutoConfiguration 添加进去
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.beiyou.AuthorityAutoConfigruation
最后打包成jar包,在我们的项目里面测试
2.6测试
引入依赖
<dependency>
<groupId>com.beiyou</groupId>
<artifactId>spring-test</artifactId>
<version>0.0.2-SNAPSHOT</version>
</dependency>
在application.properties配置文件中添加我们相应的配置
spring.auth.enabled=false
spring.auth.pathPatterns=/**
spring.auth.excludePathPatterns=/hello
启动测试指定的路径是否拦截
3.使用spring-boot-configuration-processor生产配置元数据
3.1.引入Maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
3.2.Idea配置如下(非必需)
3.3 编译打包后,自动生成spring-configuration-metadata.json文件
3.4 其它App应用使用时,就可以有如下提示
4.如何把源码上传到私仓库
4.1引入mvn依赖
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</execution>
</executions>
</plugin>
</plugins>
</build>
4.2 打包如下图
4.3私仓
参考:
https://codeup.aliyun.com/62858d45487c500c27f5aab5/202/auth-spring-boot-starter
原文地址:https://blog.csdn.net/qq_57570052/article/details/136543502
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!