当前位置: 首页 > news >正文

深圳仿站定制模板建站中国住房和城乡建设网网站

深圳仿站定制模板建站,中国住房和城乡建设网网站,推广普通话奋进新征程宣传标语,怎样有效的做网上宣传1、简述 Spring Boot 通过 Starter 机制,让开发者可以快速集成第三方组件。在企业级开发中,我们常常需要封装自己的 Starter 组件,以提高代码复用性,简化配置,并实现可插拔的模块化开发。 Spring Boot Starter 机制 …

1、简述

Spring Boot 通过 Starter 机制,让开发者可以快速集成第三方组件。在企业级开发中,我们常常需要封装自己的 Starter 组件,以提高代码复用性,简化配置,并实现可插拔的模块化开发。

  • Spring Boot Starter 机制

  • 如何创建一个自定义 Starter

  • 如何实现 Starter 组件的热拔插

  • 完整示例:自定义日志组件并支持热拔插

2、Spring Boot Starter 机制

Spring Boot Starter 是一组依赖和自动配置的集合,提供了一种约定优于配置的方式来集成第三方库。例如:

  • spring-boot-starter-web(Web 开发)

  • spring-boot-starter-data-jpa(JPA 数据库访问)

  • spring-boot-starter-actuator(监控)

自定义 Starter 允许我们封装业务逻辑,使其像官方 Starter 一样易于使用。

3、创建自定义 Starter

我们以 日志记录组件 为例,开发一个 Starter,包含:

  • 自动配置类

  • 日志服务类

  • Spring Boot 配置绑定

  • SpringFactories 机制

实现自定义Starter要引用autoconfigure的Maven:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId><version>2.1.8.RELEASE</version>
</dependency>

3.1 编写日志服务类

LogService 提供日志打印功能,支持自定义日志前缀。

package com.example.logstarter.service;public class LogService {private String logPrefix;public LogService(String logPrefix) {this.logPrefix = logPrefix;}public void log(String message) {System.out.println(logPrefix + " " + message);}
}

3.2 编写自动配置类

package com.example.logstarter.config;import com.example.logstarter.service.LogService;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
@ConditionalOnProperty(prefix = "custom.log", name = "enabled", havingValue = "true", matchIfMissing = true)
public class LogAutoConfiguration {@Bean@ConditionalOnMissingBeanpublic LogService logService() {return new LogService("[Default Log]");}
}
  • @Configuration:声明配置类。

  • @ConditionalOnProperty:控制组件是否启用(默认启用)。

  • @ConditionalOnMissingBean:防止已有 LogService 时重复注册。

3.3 配置 spring.factories

resources/META-INF/spring.factories 中添加:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.logstarter.config.LogAutoConfiguration

Spring Boot 在启动时会自动加载 LogAutoConfiguration

3.4 在主应用引入 Starter

在 Spring Boot 主项目 的 pom.xml 添加:

<dependency><groupId>com.example</groupId><artifactId>log-spring-boot-starter</artifactId><version>1.0-SNAPSHOT</version>
</dependency>

然后在 application.yml 中启用:

custom:log:enabled: true

3.5 测试 Starter

在主应用中使用:

import com.example.logstarter.service.LogService;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;@Component
public class LogTestRunner implements CommandLineRunner {private final LogService logService;public LogTestRunner(LogService logService) {this.logService = logService;}@Overridepublic void run(String... args) throws Exception {logService.log("Spring Boot 自定义 Starter 成功!");}
}

运行后输出:

[Default Log] Spring Boot 自定义 Starter 成功!

4、实现 Starter 的热拔插

在 Spring Boot 中,热拔插(Hot Plugging) 允许我们在不重启应用的情况下动态启用或禁用某些功能。

  • 如何使用 @ConditionalOnClass 实现 Starter 组件的热拔插

  • 与 @ConditionalOnProperty 的区别

完整示例:基于 @ConditionalOnClass 的日志组件

4.1 新增标记类

@ConditionalOnClass 用于检测某个类是否存在,如果存在,则加载相应的 Bean。例如:

@ConditionalOnClass(name = “com.example.ConfigMarker”)
只有 com.example.ConfigMarker 存在时,Spring Boot 才会加载该 Bean。

热拔插思路:

  • 当 某个类 存在时,自动加载相关组件。

  • 当 该类被删除 或 未引入依赖 时,不加载该组件,达到动态启用/禁用的目的。

通过自定义注解@EnableRegisterServer开关来控制热拔插技术:

import org.springframework.context.annotation.Import;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Import({ConfigMarker.class})
public @interface  EnableRegisterServer {
}

4.2 启动注解

在启动类Application添加@EnableRegisterServer这样就可以启动LogService类实例:

@EnableRegisterServer
@SpringBootApplication
public class CsvApplication {public static void main(String[] args) {SpringApplication.run(CsvApplication.class, args);}
}
http://www.dtcms.com/a/444436.html

相关文章:

  • wordpress定时网站地图建设者网站
  • 辽宁网站开发做网站外包价格
  • 青海省制作网站专业创建一个自己的网站
  • 做网站 广告费 步骤济南cms建站
  • 网站做cpa一个网站大概多少页面
  • 网站做好后交接室内设计软件免费下载
  • 江西省做网站wordpress最新文章模板
  • 百元建站雄安网站建设需要多少钱
  • 深圳中瑞建设集团官方网站制作简单的站点推广方案
  • 今天最新新闻国内大事件东莞seo关键词排名优化推广
  • 浦东新区建设工程安全质量监督站网站国内最好的crm视频
  • 求职招聘网站开发代码重庆森林百度云
  • 完整版网站推广方案成都房地产公司排行榜
  • aspnet网站开发教程数据库企业网站建设知识应用技能
  • 微信网站的结构互联网营销师培训教程
  • 集团型网站建设企业网站搭建教程
  • 如何建网站遂宁wordpress新手入门教程
  • 网站建设提供的网站资料wordpress 淘宝客赚钱
  • 在网站建设中 为了防止工期拖延页优化软件
  • seo网站建设是什么网站建设案例新闻
  • 优化网站哪个好网站注册协议模板
  • 简单三栏网站背景图在线制作
  • 网站建立定位企划小程序推广收费价目表
  • 做中医药网站有前景吗安卓上搭建wordpress
  • 图书翻页的动画 做网站启动用网站建设环境
  • 刷业务网站怎么做网站访问量太多
  • 搜索引擎网站的结构wordpress页面构造器
  • 北京网站建设外包公司网站建设与维护实训总结
  • 阿里云服务器win系统建站教程关于网站建设的报告
  • 网站菜单导航制作教程wordpress两侧悬浮框