这个SpringBoot 的技能,我劝你早点掌握

举报
yd_244540595 发表于 2024/11/04 16:08:57 2024/11/04
【摘要】 作者:程序员蜗牛自定义starter搞过不?先给一个完整案例的演示,帮大家一次搞懂。完整案例演示好了,拆解了具体的步骤,现在我们做一个较为完整的案例,来巩固一下如何自定义自己的starter。创建配置属性类首先,我们创建一个配置属性类,用于读取配置文件中的属性。javapackage com.example.starter;import org.springframework.boot.co...

作者:程序员蜗牛

自定义starter搞过不?先给一个完整案例的演示,帮大家一次搞懂。

完整案例演示

好了,拆解了具体的步骤,现在我们做一个较为完整的案例,来巩固一下如何自定义自己的starter。

  1. 创建配置属性类

首先,我们创建一个配置属性类,用于读取配置文件中的属性。

java

package com.example.starter;

import org.springframework.boot.context.properties.ConfigurationProperties;

// 使用@ConfigurationProperties注解指定前缀,表示所有以coder.academy开头的属性都会映射到这个类中
@ConfigurationProperties(prefix = "coder.academy")
public class CoderAcademyProperties {
    private String name = "defaultName";
    private int age = 20;

    // Getter和Setter方法,用于读取和设置属性值
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
} 

<顺便吆喝一句,技术大厂内推,前/后端or测试机会,尤其东莞、深圳等地紧缺!感兴趣来>这里

  1. 创建服务类

接下来,我们创建一个服务类,使用这些配置属性提供一些服务功能。

java

package com.example.starter;

public class CoderAcademyService {
    private final String name;
    private final int age;

    // 通过构造函数注入配置属性
    public CoderAcademyService(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 提供一个方法,用于打印欢迎信息
    public String welcome() {
        return "Welcome to Coder Academy, " + name + "! You are " + age + " years old.";
    }
}

  1. 创建自动配置类

然后,我们创建一个自动配置类,用于配置和初始化服务类。

java

package com.example.starter;

import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

// 使用@Configuration注解表示这是一个配置类
@Configuration
// 使用@EnableConfigurationProperties注解启用我们创建的配置属性类
@EnableConfigurationProperties(CoderAcademyProperties.class)
public class CoderAcademyAutoConfiguration {

    // 创建一个Bean方法,返回我们的服务类实例
    // 使用@ConditionalOnMissingBean注解,表示只有在Spring容器中没有其他同类型的Bean时,才会创建这个Bean
    @Bean
    @ConditionalOnMissingBean
    public CoderAcademyService coderAcademyService(CoderAcademyProperties properties) {
        return new CoderAcademyService(properties.getName(), properties.getAge());
    }
}

  1. 配置spring.factories文件

resources/META-INF/spring.factories文件中指定自动配置类,这样Spring Boot在启动时会自动加载这个配置类。

properties

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.starter.CoderAcademyAutoConfiguration
  1. 测试自定义Starter

最后,我们在一个新的Spring Boot项目中引入这个自定义Starter,并编写测试用例来验证它的功能。

java

package com.example.demo;

import com.example.starter.CoderAcademyService;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

// 使用@SpringBootApplication注解表示这是一个Spring Boot应用
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    // 使用CommandLineRunner来执行一些启动后的逻辑
    @Bean
    public CommandLineRunner commandLineRunner(CoderAcademyService coderAcademyService) {
        return args -> {
            // 打印服务类的欢迎信息
            System.out.println(coderAcademyService.welcome());
        };
    }
}

application.properties中配置属性:

properties

coder.academy.name=John Doe
coder.academy.age=30
  1. 运行结果:

启动Spring Boot应用程序后,你应该会看到控制台输出:

txt

Welcome to Coder Academy, John Doe! You are 30 years old.

看这个完整的代码示例,你大概率能够独立创建自己的starter了。

总结

我工作这么多年,遇到的微服务项目几乎都有自定义starter来封装一些独立可重用的功能,使用效果极佳。

 


“爱码士” 集结号,唤醒 “猿” 气超能力 —— 福利暖冬[免费]派送活动火热进行中

代码工具 VIP 会员、文创 “爱码士” 礼包、开心麻花门票等,➡派送通道 ~

程序员狂欢继续~~~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。