作用:自定义工具包实现零配置,开箱即用,一个注解搞定
案例:
自定义starter
新建一个springboot项目,删除启动类;
![](https://i-blog.csdnimg.cn/blog_migrate/0f3ca0d421640749f65ef77d97c64bcd.png)
在包下定义一个config类,用@Configuration和@Bean将需要依赖注入的bean全部注入IOC容器;
![](https://i-blog.csdnimg.cn/blog_migrate/76c4477a147ab28e8aa87e5e66706a36.png)
在resources文件夹下创建一个META-INF文件夹,然后在META-INF文件夹下新建一个spring.factories文件,并配置上config的路径;
![](https://i-blog.csdnimg.cn/blog_migrate/181de8545a51a4dd8dbdf97c80020fa3.png)
添加在config中的bean也可以在starter中通过注解注入使用;
![](https://i-blog.csdnimg.cn/blog_migrate/2b2a31a1271c77c38bcc09ab3c10c3bf.png)
删除pom.xml中的<build>maven打包插件;
![](https://i-blog.csdnimg.cn/blog_migrate/091163434305dcca702a5e1b3aaa336d.png)
打包进入maven仓库就可以使用了;
![](https://i-blog.csdnimg.cn/blog_migrate/c0386e67928dd70a7a6afd9bc489ba9b.png)
使用
maven引入依赖;
![](https://i-blog.csdnimg.cn/blog_migrate/c23b74f01a2dad784d13565109149b4d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0906c82fc364016756969ea789953d9f.png)
通过@Autowired或@Resource注入使用;
![](https://i-blog.csdnimg.cn/blog_migrate/7582d2763e97bc91a14f16e5dc8139f2.png)
定义注解
引入依赖
<!--AspectJ 开始-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.3.19</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.9.5</version>
</dependency>
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.0</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.3.0</version>
</dependency>
<!--AspectJ 结束-->
自定义注解
![](https://i-blog.csdnimg.cn/blog_migrate/62923de3478f24c3cf1a324f020f89e1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ba8dbd8838cb4f7a3236270d95fb42b0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/36e965fa99dcac7e16c26b27727d5093.png)
添加starter依赖后使用
![](https://i-blog.csdnimg.cn/blog_migrate/9b2ff945077b19fe42dc3d6afbc73a23.png)