如何自定制spring-boot-stater

 

最近在学习springBoot,学到启动器如何启动原理和如何自定制启动器,记录一下:

1.首先,创建空工程。

 

 

   

点finish.ok

2,创建两个子模块:注意上一步点完完成之后,自己弹出的新增模块要关掉,重新从file下面点。

这里先创建一个maven模块,作为依赖。

这里,命名方式我已starter结尾的,说明这是一个starter。

接下来创建自动配置模块。

 

注意导入web

 

3.以上模块都创建好之后:是如下这个样子滴:

cardemo是最后创建的。这一步可忽略掉。

4.两个模块创建好之后,在depen-starter的pom中导入这一段依赖。其中depen-starter的其他依赖都可删除,不需要,test和自动部署的包。

       <dependency>
            <groupId>com.yuxin</groupId>
            <artifactId>autoconfig</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

autoconfig模块的pom文件还需要导入

这是所有启动器的基础配置。

接下来就是autoconfig模块:添加三个类文件:

 

CarProperties文件:

@ConfigurationProperties(prefix = "car.properties")//注解读取配置文件的属性和java实体类做映射,properties文件需要配置以car.properties开头的两个属性,car.properties.name和car.properties.age
public class CarProperties {
    private String name;
    private String age;

    public String getName() {
        return name;
    }

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

    public String getAge() {
        return age;
    }

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

CarService文件:

public class CarService {
    private CarProperties carProperties;

    public CarProperties getCarProperties() {
        return carProperties;
    }

    public void setCarProperties(CarProperties carProperties) {
        this.carProperties = carProperties;
    }

    public String mycar(){
        return "mycar is:"+carProperties.getName()+"   and age:"+carProperties.getAge();
    }
}

CarAutoConfigurer文件:

@Configuration//表明这是一个配置类
@ConditionalOnWebApplication//判断是web环境下才生效
@EnableConfigurationProperties(CarProperties.class)//这个注解表明使配置类生效
public class CarAutoConfigurer {

    @Autowired
    private CarProperties carProperties;

    @Bean//加入到容器中
    public CarService carService(){
        CarService car = new CarService();
        car.setCarProperties(carProperties);//设置属性的值
        return car;
    }
}

要想使自动配置类生效还需要在spring.factories中配置,
 

在resources下创建META-INF文件夹下,新增spring.factories文件,右边配置写进入。这样就让spring-boot启动时,自动去寻找所有包内的spring.factories文件,然后得出一个全类名的list,然后遍历这个list去创建bean。

到此,自动配置类就算是写好了。

5.创建测试模块,名字叫cardemo,步骤和上面一样。

 

首先在pom中导入刚才我们自定制的启动器依赖

        <!--引入自定义的启动器-->
        <dependency>
            <groupId>com.yuxin</groupId>
            <artifactId>depen-starter</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

创建包controller和类CarController,CarController文件:

@RestController
public class CarController {
    @Autowired
    CarService carService;

    @GetMapping("/mycar")
    public String myCar(){
        return "我的车是:"+carService.mycar();
    }

}

 

在application.properties中增加像上面一样的配置。

接下来就启动主应用程序。在浏览器中访问,输出如下:表明自动配置类生效。

时间急促,如有不当,欢迎指正。

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值