将自己写的类自动配置到SpringBoot的IOC容器中

学过springboot的同学应该都已经或多或少了解过springboot的自动装配原理了,这里就不过多赘述了,大致结果就是spring.factorice中指定的类最终会被自动装配到springboot的容器中。(其实是我自己也只是大致理解,怕说错,hhhhh,等我细致学习了就来写博客补作业!!)

 

这里我们来讲一讲如何将自己写的模块中的类自动配置到SpringBoot的容器中。

目录

建立一个自己的模块(被依赖的模块)

 新建一个类,为它设置参数的配置

创建spring.factories文件,指定需要自动装配的类

 新建一个springboot模块

在pom文件中引入my-module模块依赖

在配置文件application.properties中填写配置

 在主启动类中获取对象并打印查看


建立一个自己的模块(被依赖的模块)

我建立的模块叫my-module,随便叫什么都行,因为是演示什么我依赖都没选,如果有需要还请勾选需要的模块。

 新建一个类,为它设置参数的配置

为它添加上属性,根据习惯提供无参构造、setter/getter。再提供一个toString方便我们查看。添加@ConfigurationProperties注解,注解的value值是可以按需求填写,这个值是将来在配置文件中使用的key的前缀(如:我这里是syyrjx.user,将来会通过syyrjx.user.id来为自动创建的对象注入id值) ,这个注解会有报错红线,因为我们还没有将这个类注册到容器中,无伤大雅。

我们看见上面有一个红色的提示,它会教我们如何生成配置文件提示(我已经在下面整理好了)。

将这些配置cv到pom文件中,这里已经整理出来

将以下配置放到<dependencies>(注意不是<dependencyManagement>标签下的<dependencies>)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

将以下配置放到<build>下的<plugins>中,如果没有就建一个

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <proc>none</proc>
    </configuration>
</plugin>
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <excludes>
            <exclude>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
            </exclude>
        </excludes>
    </configuration>
</plugin>

创建spring.factories文件,指定需要自动装配的类

在main目录下新建一个文件夹(叫什么都可以,我这里叫factories/),在这个文件夹下建立文件sping.factories,在里面指定需要自动装配的类(多个类使用英文逗号,隔开,我这里偷偷创建了一个Book类流程和User一样就不细嗦了) 

 在pom文件中声明刚刚建立的factories目录是资源目录,这个目录下的文件编译后存放在/META-INF/目录下(有时候比较奇怪会导致resouces目录别标为不是资源目录,我们需要重新声明recources是资源目录),其实,直接在resouces下建立/META-INF/spring.factories也是可以的,但是我之前尝试的时候,它会导致spring-boot-configuration-processor组件生成的文件没有地方放,后来重新尝试又是可以生成的,所以最后还是采用了pom文件指定的这种方法。

        <resources>
            <resource>
                <directory>src/main/factories</directory>
                <includes>
                    <include>spring.factories</include>
                </includes>
                <targetPath>/META-INF/</targetPath>
            </resource>
            
            <!--声明resources为资源目录-->
<!--            <resource>-->
<!--                <directory>src/main/resources</directory>-->
<!--                <includes>-->
<!--                    <include>*.*</include>-->
<!--                </includes>-->
<!--            </resource>-->
        </resources>

 然后我们compile这个模块,如果需要在本工程外的工程引用就需要install。生成的target目录下有一个自动装配的配置文件和为properties配置文件提供提示的配置文件。

被依赖的模块就创建完成了!接下来去引入这个模块看看自动配置和属性注入能否实现!!!

 

 新建一个springboot模块

这个模块依赖刚刚创建的模块

在pom文件中引入my-module模块依赖

在配置文件application.properties中填写配置

 在主启动类中获取对象并打印查看

可以看到这里的对象是我们在my-module模块中创建的类的实例化,属性是从本模块的配置文件中注入的。

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值