前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何理解 springboot starter ?

如何理解 springboot starter ?

原创
作者头像
勇哥java实战分享
修改2023-05-12 00:30:34
2360
修改2023-05-12 00:30:34
举报
文章被收录于专栏:勇哥编程游记勇哥编程游记

假如 没有 Spring Boot Starter,我们有两种方式来创建 Spring Bean。

  • spring xml 模式 (远古模式,并不推荐)
  • spring API 来创建 Spring Bean

1 spring API 来创建 Spring Bean

接下来通过 Spring 的基础 API 来创建 Spring Bean。

  1. 创建 Bean 类:创建一个普通的 Java 类,定义需要注入的属性、构造函数、以及方法。
  2. 在类上添加注解:使用 Spring 的注解将该类声明为一个 Bean。可以使用 @Component、@Service、@Repository、@Controller 等注解,这些注解都被 Spring 识别为 Bean。
  3. 配置 Bean:可以通过 Java 配置类使用 使用 @Configuration 和 @Bean 注解配置 Bean。

下面是一个示例代码片段:

代码语言:txt
复制
// Bean 类
public class MyService {
    private MyDao myDao;
    
    public MyService(MyDao myDao) {
        this.myDao = myDao;
    }
    
    public void doSomething() {
        // do something with myDao
    }
}

// Bean 配置类
@Configuration
public class MyConfig {
    @Bean
    public MyService myService(MyDao myDao) {
        return new MyService(myDao);
    }
    
    @Bean
    public MyDao myDao() {
        return new MyDao();
    }
}

在上面的示例中,我们定义了一个名为 MyService 的 Bean,它依赖 MyDao。我们使用 @Configuration 注解来定义配置类,并使用 @Bean 注解来定义 Bean。在 myService() 方法中,我们使用构造函数注入 MyDao。

可以看出,即使没有 Spring Boot Starter,使用 Spring 基础 API 来创建 Bean 比较容易,但还是需要创建相关的配置类

2 约定大于配置

Spring Boot 基于“约定大于配置”(Convention over configuration)这一理念来快速地开发、测试、运行和部署 Spring 应用,并能通过简单地与各种启动器(如 spring-boot-web-starter)结合,让应用直接以命令行的方式运行,不需再部署到独立容器中。

Spring Boot starter 构造的启动器使用起来非常方便,开发者只需要在 pom.xml 引入 starter 的依赖定义,在配置文件中编写约定的配置即可。

因此常用的开源组件都会为 Spring 的用户提供一个 spring-boot-starter 封装给开发者,让开发者非常方便集成和使用。

spring-boot-starter 实现流程如下:

01、定创建starter项目,定义 Spring 自身的依赖包和 Bean 的依赖包 ;

02、定义spring.factories 文件

在 resources 包下创建 META-INF 目录后,新建 spring.factories 文件,并在文件中定义自动加载类,文件内容是:

代码语言:yaml
复制
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.apache.spring.autoconfigure.MyConfiguration

spring boot 会根据文件中配置的自动化配置类来自动初始化相关的 Bean、Component 或 Service。

03、配置自动配置类

编写自动配置类,这些类将在Spring应用程序中自动配置starter。自动配置类应该有一个@Configuration注解,并且应该包含可以覆盖的默认值,以允许用户自定义配置。在自动配置类中,可以使用@ConditionalOnClass、@ConditionalOnMissingBean等条件注解,以便只有在需要的情况下才会配置 starter。

3 开源 springboot starter 学习项目

项目地址:

https://github.com/apache/rocketmq-spring

rocketmq-spring 的本质是一个 Spring Boot starter , 项目的源码设计 :

https://mp.weixin.qq.com/s/CxKmKqkMwKfVZLsf8TPKlQ

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 spring API 来创建 Spring Bean
  • 2 约定大于配置
  • 3 开源 springboot starter 学习项目
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档