[JavaWeb]【十三】web后端开发-原理篇

目录

一、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 配置优先级比较

[JavaWeb]【十三】web后端开发-原理篇_第1张图片

 

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

[JavaWeb]【十三】web后端开发-原理篇_第2张图片

 [JavaWeb]【十三】web后端开发-原理篇_第3张图片

 1.3 打包运行jar

[JavaWeb]【十三】web后端开发-原理篇_第4张图片

 1.4 综合优先级[JavaWeb]【十三】web后端开发-原理篇_第5张图片

  

二、Bean管理

2.1 获取bean

[JavaWeb]【十三】web后端开发-原理篇_第6张图片

 

2.2 bean作用域

2.2.1 五种作用域

[JavaWeb]【十三】web后端开发-原理篇_第7张图片

2.2.2  配置作用域

[JavaWeb]【十三】web后端开发-原理篇_第8张图片

 

2.3 第三方bean

[JavaWeb]【十三】web后端开发-原理篇_第9张图片

 

 2.3.1 编写公共配置类

  
        
            org.dom4j
            dom4j
            2.1.3
        

[JavaWeb]【十三】web后端开发-原理篇_第10张图片

 

package com.runa.config;

import org.dom4j.io.SAXReader;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration  //配置类
public class CommonConfig {

    //声明第三方Bean
    @Bean // 将当前方法的返回值对象交给IOC容器管理,成为IOC容器的bean
    //通过@bean注解的name/value的属性指定bean名称,如果未指定就是默认方法名
    public SAXReader saxReader(){
        return new SAXReader();
    }
}

 

三、SpringBoot原理

[JavaWeb]【十三】web后端开发-原理篇_第11张图片

[JavaWeb]【十三】web后端开发-原理篇_第12张图片 

3.1 起步依赖=原理

[JavaWeb]【十三】web后端开发-原理篇_第13张图片

3.2 自动配置 =原理

 ​​​​​​​[JavaWeb]【十三】web后端开发-原理篇_第14张图片

3.2.1 方案一:(放弃)

[JavaWeb]【十三】web后端开发-原理篇_第15张图片

3.2.2 方案二

 ​​​​​​​[JavaWeb]【十三】web后端开发-原理篇_第16张图片

 

 3.2.3 自动配置-源码跟踪

[JavaWeb]【十三】web后端开发-原理篇_第17张图片

 ​​​​​​​​​​​​​​[JavaWeb]【十三】web后端开发-原理篇_第18张图片

 

 

 ​​​​​​​3.2.4 @Conditional注解[JavaWeb]【十三】web后端开发-原理篇_第19张图片

 三个常见

[JavaWeb]【十三】web后端开发-原理篇_第20张图片

3.2.5 案例(自定义starter)

 ​​​​​​​​​​​​​​[JavaWeb]【十三】web后端开发-原理篇_第21张图片

 

 3.2.5.1 目标​​​​​​​以及分析[JavaWeb]【十三】web后端开发-原理篇_第22张图片

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

[JavaWeb]【十三】web后端开发-原理篇_第23张图片

 

 [JavaWeb]【十三】web后端开发-原理篇_第24张图片

 删除pom多余内容

[JavaWeb]【十三】web后端开发-原理篇_第25张图片

 

 [JavaWeb]【十三】web后端开发-原理篇_第26张图片

 

 [JavaWeb]【十三】web后端开发-原理篇_第27张图片

 删除多余文件

 [JavaWeb]【十三】web后端开发-原理篇_第28张图片

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

 

[JavaWeb]【十三】web后端开发-原理篇_第29张图片

[JavaWeb]【十三】web后端开发-原理篇_第30张图片 删除多余pom内容和文件

 [JavaWeb]【十三】web后端开发-原理篇_第31张图片

 

 [JavaWeb]【十三】web后端开发-原理篇_第32张图片

 

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

		
			com.aliyun.oss
			aliyun-oss-spring-boot-autoconfigure
			0.0.1-SNAPSHOT
		

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

   
        
            com.aliyun.oss
            aliyun-sdk-oss
            3.15.1
        
        
            javax.xml.bind
            jaxb-api
            2.3.1
        
        
            javax.activation
            activation
            1.1.1
        
        
        
            org.glassfish.jaxb
            jaxb-runtime
            2.3.3
        
   
        
            org.springframework.boot
            spring-boot-starter-web
        

 3.5.2.6 AliOSSAutoConfigure

package com.aliyun.oss;

import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableConfigurationProperties(AliOSSProperties.class)
public class AliOSSAutoConfigure {

    @Bean
    public AliOSSUtils aliOSSUtils(AliOSSProperties aliOSSProperties){
        AliOSSUtils aliOSSUtils = new AliOSSUtils();
        aliOSSUtils.setAliOSSProperties(aliOSSProperties);
        return aliOSSUtils;

    }
}

3.5.2.7 AliOSSUtils

package com.aliyun.oss;

import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;

/**
 * 阿里云 OSS 工具类
 */

public class AliOSSUtils {



    private AliOSSProperties aliOSSProperties;

    public AliOSSProperties getAliOSSProperties() {
        return aliOSSProperties;
    }

    public void setAliOSSProperties(AliOSSProperties aliOSSProperties) {
        this.aliOSSProperties = aliOSSProperties;
    }

    /**
     * 实现上传图片到OSS
     */
    public String upload(MultipartFile file) throws IOException {
        // 获取阿里云OSS参数
        String endpoint = aliOSSProperties.getEndpoint();
        String accessKeyId = aliOSSProperties.getAccessKeyId();
        String accessKeySecret = aliOSSProperties.getAccessKeySecret();
        String bucketName = aliOSSProperties.getBucketName();
        // 获取上传的文件的输入流
        InputStream inputStream = file.getInputStream();

        // 避免文件覆盖
        String originalFilename = file.getOriginalFilename();
        String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));

        //上传文件到 OSS
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        ossClient.putObject(bucketName, fileName, inputStream);

        //文件访问路径
        String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;
        // 关闭ossClient
        ossClient.shutdown();
        return url;// 把上传到oss的路径返回
    }

}

3.5.2.8 AliOSSProperties

package com.aliyun.oss;


import org.springframework.boot.context.properties.ConfigurationProperties;


@ConfigurationProperties(prefix = "aliyun.oss")
public class AliOSSProperties {

    private String endpoint;
    private String accessKeyId;
    private String accessKeySecret;
    private String bucketName;

    public String getEndpoint() {
        return endpoint;
    }

    public void setEndpoint(String endpoint) {
        this.endpoint = endpoint;
    }

    public String getAccessKeyId() {
        return accessKeyId;
    }

    public void setAccessKeyId(String accessKeyId) {
        this.accessKeyId = accessKeyId;
    }

    public String getAccessKeySecret() {
        return accessKeySecret;
    }

    public void setAccessKeySecret(String accessKeySecret) {
        this.accessKeySecret = accessKeySecret;
    }

    public String getBucketName() {
        return bucketName;
    }

    public void setBucketName(String bucketName) {
        this.bucketName = bucketName;
    }
}

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

[JavaWeb]【十三】web后端开发-原理篇_第33张图片

 

新建文件 文件名:

org.springframework.boot.autoconfigure.AutoConfiguration.imports

[JavaWeb]【十三】web后端开发-原理篇_第34张图片

 输入内容

com.aliyun.oss.AliOSSAutoConfigure

你可能感兴趣的:(java,java,开发语言)