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

网站建设布局企业网站主要有哪四种类型

网站建设布局,企业网站主要有哪四种类型,重庆seo网站排名,中国建设银行手机银行app下载官网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/wzjs/824565.html

相关文章:

  • 做球迷网站珠宝首饰网站建设规划书
  • 全国 网站备案 数量广东省网站备案
  • 昆明百度网站建设怎样提高百度推广排名
  • 广西建设厅网站绿色建筑标识网站服务器租用选择
  • 网站开发string文件菏泽住房和城乡建设局网站
  • 免费网站制作下载搭建一个论坛网站
  • 如何网站建设 需要详细的步骤网站微信登录怎么做的
  • 建站wordpress大丰网站设计公司
  • 医院网站信息化有哪些建设规范谷歌官网
  • 张槎网站开发移动端开发工具
  • 做像淘宝这样的购物网站要多少钱重庆是哪个省哪个市
  • 麦客网做网站百度网站制作联系方式
  • 课程网站建设技术北京企业建站
  • 代做企业网站备案比较好的网站建设公司
  • 班级网站模板素材wordpress双导航栏
  • 西宁网站建设模板网站设计制作体会
  • 国际版网站可以在国内做推广吗网站做不做301
  • 私人申请建设网站多少钱合肥做兼职网站设计
  • 电子商务网站系统规划 案例分析装修公司做推广网站怎么弄
  • 去什么网站做推广移动网站建设的前景
  • 响应式个人网站psd小程序游戏搭建
  • 做app的网站有哪些手机网站怎么做的好处
  • 网站安全防护找谁做教育网站模块建设
  • 南宁公司网站建设方案sem分析是什么
  • 高端网站设计简介邢台市建设银行网站
  • 深圳外贸建站广州seo网站推广优化
  • 计算机网站建设文献综述上海网页设计推荐
  • 三大门户网站php网站开发需求文档
  • 微信小程序公司网站怎么制作桂林市网站建设公司
  • 英语工作室网站怎么做网站排名突然下降