SpringBoot四大核心特性(一)

本文介绍了SpringBoot的Starter组件如何简化项目依赖,通过举例展示了在SpringBoot项目中搭建web项目只需添加一个Starter依赖。同时,详细阐述了如何手写一个自定义的Starter组件,包括创建独立的Maven项目、添加相关依赖、编写实体Bean、自动配置类,以及测试步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Starter添加项目依赖

Starter组件将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中,简化项目中maven依赖;

例如,如果使用传统Spring构建一个web项目时我们需要导入以下几个依赖:

            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>5.0.2.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>5.0.2.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.0.2.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>5.0.2.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-expression</artifactId>
                <version>5.0.2.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>5.0.2.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>5.0.2.RELEASE</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>5.0.2.RELEASE</version>
            </dependency>

在SpringBoot项目中, 搭建web项目只需要继承spring-boot-starter-parent,并添加一个依赖即可:

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.1.6.RELEASE</version>
	<relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencies>
	<dependency>
	    <groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>

</dependencies>

这个Starter依赖集成了web环境需要的jar包依赖,相当于是对常用的依赖进行一次封装,而我们也无需关心因过多依赖重复的jar包而导致的冲突问题:

常用的Starter组件有:

spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支持

spring-boot-starter-data-jpa 数据库支持

spring-boot-starter-data-redis redis数据库支持

spring-boot-starter-data-solr solr支持

mybatis-spring-boot-starter 第三方的mybatis集成starter

 

手写Starter组件:

1.构建独立的maven项目,命名如:oceanli-spring-boot-starter

2.添加spring相关依赖:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.3.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
            <version>2.3.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <version>2.3.1.RELEASE</version>
        </dependency>

3.创建实体Bean和从配置文件读取的properties类:

public class User {

    private String username;
    private String password;
    private int sex;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getSex() {
        return sex;
    }

    public void setSex(int sex) {
        this.sex = sex;
    }
}
@ConfigurationProperties(prefix = "com.oceanli")
public class OceanliProperties {

    private String username;

    private String password;

    private int sex;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getSex() {
        return sex;
    }

    public void setSex(int sex) {
        this.sex = sex;
    }
}

4.编写自动配置类:

@Configuration
@EnableConfigurationProperties(value = {OceanliProperties.class})
public class OceanliAutoConfiguration {

    @Bean
    public User user(OceanliProperties oceanliProperties) {

        User user = new User();
        user.setUsername(oceanliProperties.getUsername());
        user.setPassword(oceanliProperties.getPassword());
        user.setSex(oceanliProperties.getSex());
        return user;
    }
}

5.创建META-INFO/spring.factories文件,将自动配置类放入其中:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.oceanli.configuration.OceanliAutoConfiguration

6.打包发布jar包,starter组件开发完成。

7.测试,在另外的工程中引入oceanli-spring-boot-starter的jar包,在配置文件application.properties中配置如下:

com.oceanli.username=aaa
com.oceanli.password=456
com.oceanli.sex=18

运行项目,查看是否可以成功注入oceanli-spring-boot-starter中的bean—User,它的配置属性是否生效。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值