153
浏览量
1
粉丝
0
关注

springboot自定义组件


2020-07-03 10:21:22 194 0

源于蚂蚁课堂的学习,点击这里查看

以仿真从redis获取token为例

1.新建maven工程

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>2.0.0.RELEASE</version>
  5. </parent>
  6. <dependencies>
  7. <!-- 自定义springboot的组件,必须引入此依赖作为入口 -->
  8. <dependency>
  9. <groupId>org.springframework.boot</groupId>
  10. <artifactId>spring-boot-autoconfigure</artifactId>
  11. <version>2.2.0.RELEASE</version>
  12. </dependency>
  13. <!-- 读取配置文件时的自动提示功能 -->
  14. <dependency>
  15. <groupId>org.springframework.boot</groupId>
  16. <artifactId>spring-boot-configuration-processor</artifactId>
  17. <optional>true</optional>
  18. </dependency>
  19. </dependencies>

2.读取配置的工具类

  1. import org.springframework.boot.context.properties.ConfigurationProperties;
  2. /**
  3. * @Description todo
  4. * @Author: yanxh<br>
  5. * @Date 2020-04-09 13:50<br>
  6. * @Version 1.0<br>
  7. */
  8. @ConfigurationProperties(prefix = "yanxiaohui")
  9. public class TokenProperties {
  10. private String tokenRedisUser;
  11. private String tokenRedisPassword;
  12. public String getTokenRedisUser() {
  13. return tokenRedisUser;
  14. }
  15. public void setTokenRedisUser(String tokenRedisUser) {
  16. this.tokenRedisUser = tokenRedisUser;
  17. }
  18. public String getTokenRedisPassword() {
  19. return tokenRedisPassword;
  20. }
  21. public void setTokenRedisPassword(String tokenRedisPassword) {
  22. this.tokenRedisPassword = tokenRedisPassword;
  23. }
  24. }

3.定义配置类 

 

  1. import live.yanxiaohui.utils.TokenProperties;
  2. import org.springframework.boot.context.properties.EnableConfigurationProperties;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. /**
  6. * @Description todo
  7. * @Author: yanxh<br>
  8. * @Date 2020-04-09 14:00<br>
  9. * @Version 1.0<br>
  10. */
  11. @Configuration
  12. @EnableConfigurationProperties(TokenProperties.class)
  13. public class TokenConfig {
  14. }

4.定义具体的API业务功能

  1. import live.yanxiaohui.utils.TokenProperties;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.stereotype.Service;
  4. /**
  5. * @Description todo
  6. * @Author: yanxh<br>
  7. * @Date 2020-04-09 14:05<br>
  8. * @Version 1.0<br>
  9. */
  10. @Service
  11. public class TokenService {
  12. @Autowired
  13. private TokenProperties tokenProperties;
  14. public String getToken() {
  15. return "user=[" + tokenProperties.getTokenRedisUser() + "],password=[" + tokenProperties.getTokenRedisPassword() + "]";
  16. }
  17. }

 5.定义程序的入口(核心)

 

  1. 需在resources目录下按照约定建立一下路径的文件
  2. /MEDA-INF/spring.factories
  3. 并配置其入口参数
  4. org.springframework.boot.autoconfigure.EnableAutoConfiguration=live.yanxiaohui.config.TokenConfig
  5. 参数值为组件的配置类,即@Configuration的使用者
  6. 主要用于springboot启动时去加载starter组件中的配置

 6.maven clean install

将maven工程编译放入maven仓库

 7.新增springboot工程

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>2.0.0.RELEASE</version>
  5. </parent>
  6. <dependencies>
  7. <!-- 自定义的springboot stater组件 -->
  8. <dependency>
  9. <groupId>live.yanxiaohui</groupId>
  10. <artifactId>token-spring-boot-starter</artifactId>
  11. <version>1.0-SNAPSHOT</version>
  12. </dependency>
  13. <!-- 整合springmvc-->
  14. <dependency>
  15. <groupId>org.springframework.boot</groupId>
  16. <artifactId>spring-boot-starter-web</artifactId>
  17. <version>2.0.0.RELEASE</version>
  18. </dependency>
  19. </dependencies>

 8.完善配置文件

9.测试 

  1. import live.yanxiaohui.service.TokenService;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.RestController;
  5. /**
  6. * @Description todo
  7. * @Author: yanxh<br>
  8. * @Date 2020-04-09 14:20<br>
  9. * @Version 1.0<br>
  10. */
  11. @RestController
  12. public class IndexController {
  13. @Autowired
  14. private TokenService tokenService;
  15. @RequestMapping("/")
  16. public String index(){
  17. return tokenService.getToken();
  18. }
  19. }

 

10.总结 

  1. 1.springboot的starter组件,其实就是将某些第三方框架的API功能进行提前的整合,通过maven依赖的功能将其延用至实际使用中
  2. 2.自定义springboot的starter组件,需要按照规范建立对应的配置文件入口
  3. springboot的设计理念:
  4. 1.通过maven的依赖和springboot自定义的starter组件,可以快速整合第三方常用框架,省去手动配置开销
  5. 2.通过对spring体系注解的使用和包装,去除了XML配置,简化代码
  6. 3.java手动创建tomcat服务器,将本地的Class文件交由tomcat管理

 

精彩评论
暂无评论