当前位置:   article > 正文

[JavaWeb]【十三】web后端开发-原理篇_web使用java进行后端开发

web使用java进行后端开发

目录

一、SpringBoot配置优先级

1.1 配置优先级比较

1.2 java系统属性和命令行参数

 1.3 打包运行jar

 1.4 综合优先级​编辑

二、Bean管理

2.1 获取bean

2.2 bean作用域

2.2.1 五种作用域

2.2.2  配置作用域

2.3 第三方bean

 2.3.1 编写公共配置类

三、SpringBoot原理

3.1 起步依赖=原理

3.2 自动配置 =原理

3.2.1 方案一:(放弃)

3.2.2 方案二

 3.2.3 自动配置-源码跟踪

 3.2.4 @Conditional注解​编辑

3.2.5 案例(自定义starter)

 3.2.5.1 目标​​​​​​​以及分析​编辑

3.2.5.2 新建aliyun-oss-spring-boot-starter模块

 3.5.2.3 新建模块 aliyun-oss-spring-boot-autoconfigure

3.5.2.4 aliyun-oss-spring-boot-starter 引入

3.5.2.5 aliyun-oss-spring-boot-autoconfigure引入依赖

 3.5.2.6 AliOSSAutoConfigure

3.5.2.7 AliOSSUtils

3.5.2.8 AliOSSProperties

3.5.2.9 新建org.springframework.boot.autoconfigure.AutoConfiguration.imports


前言:SpringBoot配置优先级、Bean管理、SpringBoot原理

一、SpringBoot配置优先级

1.1 配置优先级比较

 

1.2 java系统属性和命令行参数

 

 1.3 打包运行jar

 1.4 综合优先级

  

二、Bean管理

2.1 获取bean

 

2.2 bean作用域

2.2.1 五种作用域

2.2.2  配置作用域

 

2.3 第三方bean

 

 2.3.1 编写公共配置类

  1. <!-- https://mvnrepository.com/artifact/org.dom4j/dom4j -->
  2. <dependency>
  3. <groupId>org.dom4j</groupId>
  4. <artifactId>dom4j</artifactId>
  5. <version>2.1.3</version>
  6. </dependency>

 

  1. package com.runa.config;
  2. import org.dom4j.io.SAXReader;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. @Configuration //配置类
  6. public class CommonConfig {
  7. //声明第三方Bean
  8. @Bean // 将当前方法的返回值对象交给IOC容器管理,成为IOC容器的bean
  9. //通过@bean注解的name/value的属性指定bean名称,如果未指定就是默认方法名
  10. public SAXReader saxReader(){
  11. return new SAXReader();
  12. }
  13. }

 

三、SpringBoot原理

 

3.1 起步依赖=原理

3.2 自动配置 =原理

 ​​​​​​​

3.2.1 方案一:(放弃)

3.2.2 方案二

 ​​​​​​​

 

 3.2.3 自动配置-源码跟踪

 ​​​​​​​​​​​​​​

 

 

 ​​​​​​​3.2.4 @Conditional注解

 三个常见

3.2.5 案例(自定义starter)

 ​​​​​​​​​​​​​​

 

 3.2.5.1 目标​​​​​​​以及分析
3.2.5.2 新建aliyun-oss-spring-boot-starter模块

 

 

 删除pom多余内容

 

 

 

 

 删除多余文件

 

 3.5.2.3 新建模块 aliyun-oss-spring-boot-autoconfigure

 

 删除多余pom内容和文件

 

 

 

 

3.5.2.4 aliyun-oss-spring-boot-starter 引入
  1. <dependency>
  2. <groupId>com.aliyun.oss</groupId>
  3. <artifactId>aliyun-oss-spring-boot-autoconfigure</artifactId>
  4. <version>0.0.1-SNAPSHOT</version>
  5. </dependency>
3.5.2.5 aliyun-oss-spring-boot-autoconfigure引入依赖
  1. <!-- 阿里云OSS依赖-->
  2. <dependency>
  3. <groupId>com.aliyun.oss</groupId>
  4. <artifactId>aliyun-sdk-oss</artifactId>
  5. <version>3.15.1</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>javax.xml.bind</groupId>
  9. <artifactId>jaxb-api</artifactId>
  10. <version>2.3.1</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>javax.activation</groupId>
  14. <artifactId>activation</artifactId>
  15. <version>1.1.1</version>
  16. </dependency>
  17. <!-- no more than 2.3.3-->
  18. <dependency>
  19. <groupId>org.glassfish.jaxb</groupId>
  20. <artifactId>jaxb-runtime</artifactId>
  21. <version>2.3.3</version>
  22. </dependency>
  1. <!-- web 起步依赖 -->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. </dependency>
 3.5.2.6 AliOSSAutoConfigure
  1. package com.aliyun.oss;
  2. import org.springframework.boot.context.properties.EnableConfigurationProperties;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. @Configuration
  6. @EnableConfigurationProperties(AliOSSProperties.class)
  7. public class AliOSSAutoConfigure {
  8. @Bean
  9. public AliOSSUtils aliOSSUtils(AliOSSProperties aliOSSProperties){
  10. AliOSSUtils aliOSSUtils = new AliOSSUtils();
  11. aliOSSUtils.setAliOSSProperties(aliOSSProperties);
  12. return aliOSSUtils;
  13. }
  14. }
3.5.2.7 AliOSSUtils
  1. package com.aliyun.oss;
  2. import org.springframework.web.multipart.MultipartFile;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.util.UUID;
  6. /**
  7. * 阿里云 OSS 工具类
  8. */
  9. public class AliOSSUtils {
  10. private AliOSSProperties aliOSSProperties;
  11. public AliOSSProperties getAliOSSProperties() {
  12. return aliOSSProperties;
  13. }
  14. public void setAliOSSProperties(AliOSSProperties aliOSSProperties) {
  15. this.aliOSSProperties = aliOSSProperties;
  16. }
  17. /**
  18. * 实现上传图片到OSS
  19. */
  20. public String upload(MultipartFile file) throws IOException {
  21. // 获取阿里云OSS参数
  22. String endpoint = aliOSSProperties.getEndpoint();
  23. String accessKeyId = aliOSSProperties.getAccessKeyId();
  24. String accessKeySecret = aliOSSProperties.getAccessKeySecret();
  25. String bucketName = aliOSSProperties.getBucketName();
  26. // 获取上传的文件的输入流
  27. InputStream inputStream = file.getInputStream();
  28. // 避免文件覆盖
  29. String originalFilename = file.getOriginalFilename();
  30. String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));
  31. //上传文件到 OSS
  32. OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
  33. ossClient.putObject(bucketName, fileName, inputStream);
  34. //文件访问路径
  35. String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;
  36. // 关闭ossClient
  37. ossClient.shutdown();
  38. return url;// 把上传到oss的路径返回
  39. }
  40. }
3.5.2.8 AliOSSProperties
  1. package com.aliyun.oss;
  2. import org.springframework.boot.context.properties.ConfigurationProperties;
  3. @ConfigurationProperties(prefix = "aliyun.oss")
  4. public class AliOSSProperties {
  5. private String endpoint;
  6. private String accessKeyId;
  7. private String accessKeySecret;
  8. private String bucketName;
  9. public String getEndpoint() {
  10. return endpoint;
  11. }
  12. public void setEndpoint(String endpoint) {
  13. this.endpoint = endpoint;
  14. }
  15. public String getAccessKeyId() {
  16. return accessKeyId;
  17. }
  18. public void setAccessKeyId(String accessKeyId) {
  19. this.accessKeyId = accessKeyId;
  20. }
  21. public String getAccessKeySecret() {
  22. return accessKeySecret;
  23. }
  24. public void setAccessKeySecret(String accessKeySecret) {
  25. this.accessKeySecret = accessKeySecret;
  26. }
  27. public String getBucketName() {
  28. return bucketName;
  29. }
  30. public void setBucketName(String bucketName) {
  31. this.bucketName = bucketName;
  32. }
  33. }
3.5.2.9 新建org.springframework.boot.autoconfigure.AutoConfiguration.imports

 

新建文件 文件名:

org.springframework.boot.autoconfigure.AutoConfiguration.imports

 输入内容

com.aliyun.oss.AliOSSAutoConfigure

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/157137
推荐阅读
相关标签
  

闽ICP备14008679号