springboot中自定义模块的使用,以及使用yml配置是如何对自定义模块内部生效的

 一,简介

   在我们springboot开发过程中会导入很多依赖,然后通过yml进行配置使用,这里面的根本原理是什么呢

     依赖中的所有的@Component注解的类都是被IOC容器进行管理的,所以我们在导入这个依赖的时候,IOC容器会自动将依赖中的bean对象自动进行管理,并自动加载yml文件中所设置的属性值, 这样我们就可以方便的使用别人已经创建好的对象了

二,案例:

   我自定义了两个依赖模块:commont模块和pojo模块,然后直接在模块service中进行使用

  首先创建commont模块

首先导入依赖:  

<!--当bean对象中使用@ConfigurationProperties加载属性的时候,让yml文件可以直接显示该bean的属性名-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

-

-

-

然后创建properteis包,并在该包中创建对象AA

在aa.java中:

 @Component

@ConfigurationProperties(prefix = "aa")              //这个是加载yml文件中的对象aa

@Data

public class AA {

    private String name;

    private String age;

  }

-

-

-

-

然后你可以直接在该模块的yml中对这几个属性进行设置,当然你也可以不进行设置,让别人在使用该模块的时候,让别人进行设置

在yml中:

aa:

  name: zhan

  age:12

-

-

-

最后这个模块就配置完了,别人在导入的时候,就可以直接使用这个模块中的AA对象了

然后创建pojo模块,主要是和comment模块进行对比, 在不导入依赖以及不进行yml配置的时候会怎么样

首先这个模块我不导入spring-boot-configuration-processor依赖也没什么事情,只是别人在yml中进行配置的时候不方便而已

-

-

-

-

然后创建包properties,在包中创建一个对象BB

在BB.java中

@Component

@ConfigurationProperties(prefix = "bb")

@Data public class BB {

       private String sex;

    }

-

-

-

-

然后我在这个模块中不进行yml配置

-

-

-

-

最后这个pojo模块就设置完了,别人在导入的时候,就可以直接使用这个模块中的BB对象了

最后在service模块中

 首先我分别导入commont模块和pojo模块依赖

-

-

-

-

a)不进行yml配置直接使用的情况:

    在AAController中直接导入依赖中的对象进行使用:

    在AAController中

public   class   AAController{

   @Resource

   private   AA   aa;

   @Resource

  private  BB  bb;

  @GetMapping("/aa")

 public  String   aa(){

    System.out.println(aa.toString() )              //这个结果为{name:zhan,age:12}

                                  //因为我已经在commont模块中的yml中配置了对应的属性值

   System.out.println(bb);           //打印结果为null,

                                           //我并没有在pojo模块中配置对应的属性值

  return  "成功";

     }

}

-

-

-

-

-

-

-

-

-

-

-

bb)先进行yml配置,再使用对象的情况

 首先在yml中

 aa:       //当你输入aa的时候,它会自动提示内部的两个属性名,这就是使用依赖的好处

           //在它的提示中会显示aa.name=zhan, aa.age=12,  表示这两个属性有默认值

          //你设置的话当然是以你设置的值为主

     name: fang

     age:15

bb:        //当你输入bb的时候,它不会给你提示,这样很不方便,这就是没有使用依赖的坏处

   sex: nan

-

-

-

-

然后在BBController.java中

public   class   BBController{

   @Resource

   private   AA   aa;

   @Resource

  private  BB  bb;

  @GetMapping("/bb")

 public  String   aa(){

    System.out.println(aa.toString() )              //这个结果为{name:fang,age:15}

                                  //因为我已经在commont模块中的yml中配置了对应的属性值

   System.out.println(bb.toString);           //打印结果为{sex: nan"

  return  "成功";

     }

}

-

现在你该知道该如何自定义模块进行使用了吧,哈哈

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值