SpringBoot 手写 Starter

excludePathPatterns方法不生效 证书授权的功能,然后在配置拦截器的时候拦截了所有的请求都必须验证License是否到期,但是这样会导致接口响应慢,所以打算使用。这个接口,然后我现在代码是这样写的,却怎么测试都不生效。路径,外部访问接口的时候必须要以/api为前缀,但是在。时会出现以外,在别的场景中也会出现这样的问题,比如在。中拦截请求是否需要认证时,也不能使用这个。方法对部分url请求放行。后来经过多次尝试后终于发现了问题,将。因为我是在yml配置文件中设置了。去掉写成下面这样的写法就通过生效了。中配置其实是不需要这个前缀的。 阅读详情

spring-boot-starter 模块

介绍

        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>
    </build>

4.2 打包如下图

4.3私仓

简单手写一个Spring boot starter SpringBoot自定义Starter开发指南 本文介绍了开发SpringBoot自定义Starter的完整流程。Starter能够简化依赖管理,实现即插即用的功能模块。文章以字符串加前缀功能为例,详细说明了实现步骤:1)创建项目并引入核心依赖spring-boot-autoconfigure;2)编写自动配置类(PrefixAutoConfiguration)和属性类(PrefixProperties);3)实现业务逻辑(PrefixService);4)配置spring.factories或AutoC 阅读详情

相关推荐

YOLOv8剪枝实战:基于torch_pruning的模型优化与性能提升指南

本文详细介绍了如何使用torch_pruning工具对YOLOv8模型进行结构化剪枝,以实现模型轻量化与性能提升。通过实战步骤解析,包括环境搭建、依赖图分析、迭代剪枝与微调策略,帮助开发者有效减少模型参数量和计算量,提升在边缘设备上的推理速度,同时保持检测(detect)与分割(segment)任务的精度。

water的专栏 1122

SpringBoot手写starter 超详细

SpringBoot手写starter 相信大家在公司做项目时经常会使用到公司自己封装的依赖,里面就包括一些starter。可以用于制成通用方法以及框架等方便维护以及后续开发。所以研究了一下如何自己去写。先小试牛刀(在一个maven项目下快速两个创建springboot项目,一个用来写starter,一个用来测试。至于为什么这样建是因为,写完的starter需要打包然后配置下maven私库才能跨项目使用,所以现在同一个工程里做) 首先 创建完的项目就是这样子。stater的命名是有规范的,像官方的就是把自

qq_44772660的博客 7111

微软Media Creation Tool 创建工具 1.3 升级:支持全新下载安装Win11 22H2 Build 22621.525

微软 Media Creation Tool 创建工具 1.3 升级:支持全新下载安装 Win11 22H2 Build 22621.525 ISO 镜像,如果今天运行使用 Media Creation Tool,则会下载 Windows 11 2022 版本 Build 22621.525,它不会向操作系统添加任何新内容,但会修复安装问题,下面来看看详细的更新内容。

zym0218的博客 4230

SpringBoot简介及手写个starter

SpringBoot简介及手写starter

weixin_45472766的博客 1052

SAP CO模块实战:成本中心会计分割结构配置全流程(OKES事务码详解)

本文详细解析了SAP CO模块中成本中心会计分割结构的配置全流程,重点讲解了OKES事务码的实战操作。内容涵盖分割结构的概念理解、配置前的次级成本要素与作业类型主数据准备,并通过步骤拆解演示了如何定义分割结构、规则与版本,以及如何将配置关联到成本中心并执行分割。最后提供了常见问题排查与优化建议,旨在帮助顾问及财务人员掌握成本精确分摊的关键配置,确保期末成本核算的准确性。

embedding5hiker的博客 804

STM32 热敏电阻测量温度

1、硬件 STM32F103C8T6、热敏电阻传感器、OLED。 2、热敏电阻传感器的介绍

weixin_54721788的博客 1万+

如何手写一个springBoot的starter

使用SpringBoot,可以快速帮我们搭建一个spring 应用,如果当前项目需要引入第三方的功能实现,我们只需要在当前项目的pom.xml文件中引入第三方的spring-boot-starter包。目前,springboot的社区,提供了很多第三方的spring-boot-starter,但有时候,我们还是需要根据自己项目的情况,编写满足项目需求的spring-boot-starter。在GitHub新建一个仓库,并把weather-service、weather-starter都上传到这个仓库中。

sgjingwen1987的博客 1774

Log4Shell漏洞复现:从原理到实战的完整指南

日志记录是软件开发中用于追踪应用状态和排查问题的关键技术。然而,当日志组件对用户输入进行不当解析时,可能引发严重的安全风险。Log4j2作为Java生态中广泛使用的日志框架,其Lookup功能允许在日志中动态插入变量,这一设计初衷虽为便利,却因递归解析机制埋下了隐患。攻击者通过构造特定的JNDI(Java命名和目录接口)查询字符串,可诱使应用加载并执行远程恶意代码,从而实现远程命令执行。这种漏洞的价值在于其极低的利用门槛和极高的潜在危害,常被用于渗透测试和安全评估中,以验证系统的防御能力。本文以CVE-20

weixin_30496999的博客 274

手写SpringBoot-starter组件

一:手写starter组件步骤: SpringBoot有个很好的特性,即开箱即用,只要引入对应的starter组件,使用@Autowired注解即可实例化Bean,那原理是怎么的呢?先通过手写一个简单的数据库连接的组件了解步骤,再通过代码看原理。 1 . 创建XXXProperties 在此类上添加@ConfigurationProperties注解 说明:@ConfigurationProperties是springboot提供读取配置文件的一个注解。其对应的bean的后置处理器为Configuratio

m0_37044584的博客 617

WinForm布局

登录模板页面UILoginForm

m0_71541781的博客 469

高项49个过程,输入、工具技术、输出的思维导图

为了制定项目章程的管理方法主要是采用了数据收集技术,例如通过头脑风暴,通过召集主题专家和团队成员收集信息、解决方案,并在短时间内获得大量创意,并对大量创意进行分析和排序,选出最优化最适合本项目方案,并对项目成员的不同差异观点,进行了引导和对冲突的管理,最终有助于项目干系人的目标、成功标准的内容达成一致意见,形成完善的项目章程。在本过程中得到项目章程,在制定项目章程中需要包括信息有:项目名称、项目目标、项目总里程碑进度表、项目经理、主要干系人及财务预算信息。本过程在仅开展一次,或仅在项目的预定义点开展。

Legend_Jiang的博客 6179

SpringBoot之手写starter

SpringBoot手写starter

yuyanhaonan的博客 710

BPC坏点矫正

whatis the Bad Pixel? 坏点为死点,也就是基本不随照度变化呈现光电线性转换的关系。表现为暗态常亮,亮态常暗。 坏点分类:静态坏点:亮坏点,暗坏点。 动态坏点:在一定像素范围内,该点表现正常,而超过这一范围,该点表现的比周围像素要亮。与sensor ...

camerall 1万+

如何手写一个SpringBoot Starter

SpringApplication.run(DemoApplication.class, args);

cable5881的博客 883

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SpringBoot中的Starter,我们来手写一个

SpringBoot中的Starter,我们来手写一个 最近一个朋友去面试被问到了springboot中starter,觉得可以来记录与分享一下 我们使用 Spring Boot,基本上都是沉醉在它 Stater 的方便之中。Starter 为我们带来了众多的自动化配置,有了这些自动化配置,我们可以不费吹灰之力就能搭建一个生产级开发环境,其实 Starter 也都是 Spring + SpringMVC 中的基础知识点实现的 1.核心 其实 Starter 的核心就是条件注解 @Conditional ,当

qq_34136709的博客 316

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

手写一个SpringBoot Starter

手写一个SpringBoot Starter 定义 所谓的 Starter ,就是Springboot中的某一个模块,它把这一一模块的所需要的JAR包打包好给我们并且能报配置文件文件搞好,不需要我们手机配置了,其实就是一个普通的 Maven 项目 。 开整 首先建立一个Maven项目, 创建完成后,添加 Starter 的自动化配置类即可 <dependency> <groupId>org.springframework.boot</groupId>

weixin_44559993的博客 219

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

手写一个stater_手写一个springboot starter

springboot的starter的作用就是自动装配。将配置类自动装配好放入ioc容器里。作为一个组件,提供给springboot的程序使用。今天手写一个starter。写一个dog类,有个bark方法,能叫唤出自己的名字。建一个普通的maven工程,引入springboot依赖pom.xmlorg.springframework.bootspring-boot2.3.1.RELEASE类定义如...

weixin_42486337的博客 180

【深入浅出SpringBoot的核心原理】手写Starter

我们通过手写一个starter,实现一个这样的功能:如果存在FastJson包则将对象以json形式输出,否则以对象的toString()输出。另外引入这个starter后我们不希望有任何的配置(自动配置),开箱即用。此文并不探究starter的原理,只希望读者可以初步了解一个starter的开发流程。 步骤1:新建一个空maven工程,并在pom.xml中导入如下依赖 <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --&

qq_35529931的博客 1018

深度解析 Spring Boot 以及手写一个 starter

什么是 Spring Boot Spring Boot 基本上是 Spring 框架的扩展,它消除了设置 Spring 应用程序所需的复杂例行配置。我们在使用 Spring 框架的时候,我们接触得比较多的应该是 Spring MVC、 IOC 、 DI 、AOP 等等,而这些框架在使用的过程中会需要配置大量的 XML,或者需要做很多繁琐的配置。Spring Boot 可以帮助我们快速搭建一个基于 Spirng 框架以及 Spring 生态体系的应用解决方案。 我们对着官网来翻译一下: 创建独立的 Spr

a779868946的博客 704

springboot入参检查aop_深度解析 Spring Boot 以及手写一个 starter

小Hub领读:我觉得这是SpringBoot的比较核心的功能了,就是这个starter,自动装配,让我们可以快速集成第三方框架,真是个好设计!太赞了,SpringBoot+Vue前后端分离完整入门教程!​mp.weixin.qq.com作者:jack_xu来源: https://juejin.im/post/5ec7d2f5e51d45785c693a9e什么是 Spring BootSpring...

weixin_39568172的博客 137

手写springboot属于自己的starter源码

创建独立的Spring应用内嵌Tomcat、Jetty或Undertow(无需部署war包)提供自用的starter来简化构建配置提供指标监控、运行状况检查和外部化配置没有代码生成,也不需要XML配置(约定大于配置)在我们的日常开发工作中,经常会有一些独立于业务之外的配置模块,我们经常将其放到一个特定的包下,然后如果另一个工程需要复用这块功能的时候,需要将代码硬拷贝到另一个工程,重新集成一遍,麻烦至极。如果我们将这些可独立于业务代码之外的功配置模块封装成一个个starter。

刻苦的樊同学 1073

手写一个springboot的starter包

Spring Boot Starter 是一组方便的依赖项,它们帮助开发者快速集成 Spring Boot 应用所需的常用功能。通过使用 Starter,开发者可以减少配置和依赖管理的复杂性。手写一个 Spring Boot Starter 包可以帮助你快速复用某些功能或集成特定的库。下面是创建一个简单的 Spring Boot Starter 的步骤,包括项目结构、代码示例和配置说明。

yymagicer的博客 396

springboot之手写starter配置类

前序文章springboot自动装配和统一配置分析中,提到自动装配是基于Spring的spi机制,封装自动装配类,提供给spring进行统一管理。为了显而易见的展示该依赖是自动装配类,有了如下规范,包名中含有starter关键词,springboot自带的自动装配类不以starter结尾,如spring-boot-starter-web,第三方配置类以starter结尾,如xxl-job-starter。

weixin_44550507的博客 806

一文带你学会手写spring-boot-starter

手把手教你写spring-boot-starter

weixin_45642975的博客 872

手写starter springboot(无废话版)

springboot 手写一个starter超简单

qq_42058998的博客 8123
上一篇: Maven setting.xml 配置
下一篇: D:\maven\repo\cn\example\kooong_model\0.0.1-SNAPSHOT\kooong_model-0.0.1-SNAPSHOT.jar.135568797481763
涵冰...
博客等级 码龄4年 2438粉丝 243原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涵冰...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值