当前位置: 首页 > news >正文

网站功能配置seo原创工具

网站功能配置,seo原创工具,计算机网站建设与管理是什么,随州网站建设全包Web后端开发_07 SpringBoot_02 SpringBoot原理 1.配置优先级 1.1配置 SpringBoot中支持三种格式的配置文件#xff1a; application.propertiesapplication.ymlapplication.yaml properties、yaml、yml三种配置文件#xff0c;优先级最高的是properties 配置文件优先级…Web后端开发_07 SpringBoot_02 SpringBoot原理 1.配置优先级 1.1配置 SpringBoot中支持三种格式的配置文件 application.propertiesapplication.ymlapplication.yaml properties、yaml、yml三种配置文件优先级最高的是properties 配置文件优先级排名从高到低 properties配置文件yml配置文件yaml配置文件 注意事项 虽然springboot支持多种格式配置文件但是在项目开发时推荐统一使用一种格式的配置yml是主流 SpringBoot除了支持配置文件属性配置还支持Java系统属性和命令参数的方式进行属性配置 #Java系统属性 -Dserver.port9000#命令行参数 --server.port10010重启服务同时配置Tomcat端口(三种配置文件、系统属性、命令行参数)测试哪个Tomcat端口号生效 优先级 命令行参数 系统属性参数 properties参数 yml参数 yaml参数 1.2问题引出 如果项目已经打包上线了这个时候我们又如何来设置Java系统属性和命令行参数呢 java -Dserver.port9000 -jar XXXXX.jar --server.port10010下面我们来演示下打包程序运行时指定Java系统属性和命令行参数 执行maven打包指令package把项目打成jar文件使用命令java -jar 方式运行jar文件程序 注意事项 SpringBoot项目进行打包时需要引入插件spring-boot-maven-plugin基于官方骨架创建的项目会自动添加该插件 skiptrue/skip需要改为false 原因 这是一个 Java 项目的 Maven 配置文件 pom.xml 的一部分。 元素指定了项目的主类也就是在执行项目时会调用的入口程序。在这个示例中主类是com.bowen.SpringbootWebConfigApplication也就是 Spring Boot 项目的启动类。 skip 元素设置为 true 时Maven 会跳过这个项目的构建过程也就是说项目不会被编译打包。这个设置通常在调试或测试阶段使用可以避免重复构建和打包加快开发速度。 我的是用阿里云镜像构建的springboot项目使用的JDK1.8/Java8 plugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion${spring-boot.version}/versionconfigurationmainClasscom.bowen.SpringbootWebConfigApplication/mainClassskipfalse/skip/configurationexecutionsexecutionidrepackage/idgoalsgoalrepackage/goal/goals/execution/executions /plugin若skiptrue/skip运行打包后的文件时会出现以下报错 E:\java_study\020-Maven\springboot-web-config\targetjava -jar springboot-web-config-0.0.1-SNAPSHOT.jar springboot-web-config-0.0.1-SNAPSHOT.jar中没有主清单属性1.3项目打包 运行jar程序 直接运行 同时设置Java系统属性和命令行参数仅设置Java系统属性 1.4配置优先级 在SpringBoot项目当中常见的属性配置方式有5种 3种配置文件加上2种外部属性的配置(Java系统属性、命令行参数)。通过以上的测试得出了优先级(从低到高) 优先级(从低到高) application.yaml忽略application.ymlapplication.propertiesjava系统属性-Dxxxxxx命令行参数–xxxxxx 2.Bean管理 2.1获取bean 默认情况下SpringBoot项目在启动的时候会自动的创建IOC容器也称为Spring容器并且在启动的过程当中会自动的将bean对象都创建好存放在IOC容器当中。应用程序在运行时需要依赖什么bean对象就直接进行依赖注入就可以了。 而在Spring容器中提供了一些方法可以主动从IOC容器中获取到bean对象下面介绍3种常用方式 根据name获取bean Object getBean(String name)根据类型获取bean T T getBean(ClassT requiredType)根据name获取bean带类型转换 T T getBean(String name, ClassT requiredType)思考要从IOC容器当中来获取到bean对象需要先拿到IOC容器对象怎么样才能拿到IOC容器呢 想获取到IOC容器直接将IOC容器对象注入进来就可以了 控制器DeptController RestController RequestMapping(/depts) public class DeptController {Autowiredprivate DeptService deptService;public DeptController(){System.out.println(DeptController constructor ....);}GetMappingpublic Result list(){ListDept deptList deptService.list();return Result.success(deptList);}DeleteMapping(/{id})public Result delete(PathVariable Integer id) {deptService.delete(id);return Result.success();}PostMappingpublic Result save(RequestBody Dept dept){deptService.save(dept);return Result.success();} }业务实现类DeptServiceImpl Slf4j Service public class DeptServiceImpl implements DeptService {Autowiredprivate DeptMapper deptMapper;Overridepublic ListDept list() {ListDept deptList deptMapper.list();return deptList;}Overridepublic void delete(Integer id) {deptMapper.delete(id);}Overridepublic void save(Dept dept) {dept.setCreateTime(LocalDateTime.now());dept.setUpdateTime(LocalDateTime.now());deptMapper.save(dept);} }Mapper接口 Mapper public interface DeptMapper {//查询全部部门数据Select(select * from dept)ListDept list();//删除部门Delete(delete from dept where id #{id})void delete(Integer id);//新增部门Insert(insert into dept(name, create_time, update_time) values (#{name},#{createTime},#{updateTime}))void save(Dept dept); } 测试类 SpringBootTest class SpringbootWebConfig2ApplicationTests {Autowiredprivate ApplicationContext applicationContext; //IOC容器对象//获取bean对象Testpublic void testGetBean(){//根据bean的名称获取DeptController bean1 (DeptController) applicationContext.getBean(deptController);System.out.println(bean1);//根据bean的类型获取DeptController bean2 applicationContext.getBean(DeptController.class);System.out.println(bean2);//根据bean的名称 及 类型获取DeptController bean3 applicationContext.getBean(deptController, DeptController.class);System.out.println(bean3);} }程序运行后控制台日志 输出的bean对象地址值是一样的说明IOC容器当中的bean对象只有一个默认情况下IOC中的bean对象是单例 如何将bean对象设置为非单例的(每次获取的bean都是一个新对象)使用bean作用域 注意事项 上述所说的 【Spring项目启动时会把其中的bean都创建好】还会受到作用域及延迟初始化影响这里主要针对于默认的单例非延迟加载的bean而言。 2.2bean作用域 spring支持五种作用域后三种在web环境才生效 作用域说明singleton容器内同名称的bean只有一个实例单例默认prototype每次使用该bean时会创建新的实例非单例request每个请求范围内会创建新的实例web环境中了解session每个会话范围内会创建新的实例web环境中了解application每个应用范围内会创建新的实例web环境中了解 可以通过Scope注解来进行配置作用域 注意事项 默认singleton的bean在容器启动时被创建可以使用Lazy注解来延迟初始化延迟到第一次使用时prototype的bean每一次使用该bean的时候都会创建一个新的实例实际开发当中绝大部分的Bean是单例的也就是说绝大部分Bean不需要配置scope属性。 2.2.1测试一 //bean的作用域 Test public void testScope(){for (int i 0; i 10; i) {DeptController deptController applicationContext.getBean(DeptController.class);System.out.println(deptController);} }在项目启动的时候DeptController的构造方法已经运行了说明这个bean对象已经实例化了是在容器启动的时候实例化的这时已经将实例化的对象放到了IOC容器当中。 放行后输出了同一个对象十次因为没有设置Scope默认Scope的取值是singleton单例的 2.2.2测试二 在DeptController里加个注解Lazy延迟初始化 放行 2.2.3测试三 在DeptController里加个注解Scope(prototype)设置为非单例的 2.3第三方bean 2.3.1Bean 如果要管理的bean对象来自于第三方不是自定义的是无法用Component及衍生注解声明bean的就需要用到Bean注解若要管理的第三方bean对象建议对这些bean进行集中分类配置可以通过Configuration注解声明一个配置类。 使用最快速的方法声明第三方Bean对象即在启动类创建不建议这样使用 注意事项 通过Bean注解的name或value属性可以声明bean的名称如果不指定默认bean的名称就是方法名。 如果第三方bean需要依赖其它bean对象直接在bean定义方法中设置形参即可容器会根据类型自动装配。 在启动类定义一个saxReader方法 SpringBootApplication public class SpringbootWebConfig2Application {public static void main(String[] args) {SpringApplication.run(SpringbootWebConfig2Application.class, args);}//声明第三方beanBean //将当前方法的返回值对象交给IOC容器管理, 成为IOC容器beanpublic SAXReader saxReader(){return new SAXReader();} }测试类 Autowiredprivate SAXReader saxReader;//第三方bean的管理Testpublic void testThirdBean() throws Exception { // SAXReader saxReader new SAXReader();Document document saxReader.read(this.getClass().getClassLoader().getResource(1.xml));Element rootElement document.getRootElement();String name rootElement.element(name).getText();String age rootElement.element(age).getText();System.out.println(name : age);}加断点debug 2.3.2单独建立一个配置类 在config包下创建CommonConfig.java类 Configuration //配置类 public class CommonConfig {//声明第三方beanBean //将当前方法的返回值对象交给IOC容器管理, 成为IOC容器bean//通过Bean注解的name/value属性指定bean名称, 如果未指定, 默认是方法名public SAXReader reader(DeptService deptService){System.out.println(deptService);return new SAXReader();}}完成自动装配 2.3.3关于Bean只需要保持一个原则 如果是在项目当中我们自己定义的类想将这些类交给IOC容器管理直接使用Component以及它的衍生注解来声明就可以。如果这个类它不是我们自己定义的而是引入的第三方依赖当中提供的类而且我们还想将这个类交给IOC容器管理。此时我们就需要在配置类中定义一个方法在方法上加上一个Bean注解通过这种方式来声明第三方的bean对象。 3.SpringBoot原理 3.1spring 3.2启动依赖 起步依赖原理 Spring框架需要引入的依赖各个依赖的版本还需要匹配 spring-webmvc依赖这是Spring框架进行web程序开发所需要的依赖 servlet-api依赖Servlet基础依赖 jackson-databind依赖JSON处理工具包 如果要使用AOP还需要引入aop依赖、aspect依赖 项目中所引入的这些依赖还需要保证版本匹配否则就可能会出现版本冲突问题。 使用SpringBoot仅需要引入一个依赖即可web开发的起步依赖springboot-starter-web。主要使用的就是依赖传递。 为什么我们只需要引入一个web开发的起步依赖web开发所需要的所有的依赖都有了呢 因为Maven的依赖传递。 在SpringBoot给我们提供的这些起步依赖当中已提供了当前程序开发所需要的所有的常见依赖(官网地址https://docs.spring.io/spring-boot/docs/2.7.7/reference/htmlsingle/#using.build-systems.starters)。 比如springboot-starter-web这是web开发的起步依赖在web开发的起步依赖当中就集成了web开发中常见的依赖json、web、webmvc、tomcat等。我们只需要引入这一个起步依赖其他的依赖都会自动的通过Maven的依赖传递进来。 结论起步依赖的原理就是Maven的依赖传递。 3.3自动配置 SpringBoot的自动配置就是当spring容器启动后一些配置类、bean对象就自动存入到了IOC容器中不需要手动去声明从而简化了开发省去了繁琐的配置 自动配置示例 3.3.1自动配置原理 3.3.1.1 概述 准备工作在Idea中导入资料\03. 自动配置原理下的itheima-utils工程 1、在SpringBoot项目 spring-boot-web-config2 工程中通过坐标引入itheima-utils依赖 添加模块 我在做的时候该模块重复导入了三次才引入成功 在本项目中引入模拟的第三方依赖 dependencygroupIdcom.example/groupIdartifactIditheima-utils/artifactIdversion0.0.1-SNAPSHOT/version /dependency2、在测试类中添加测试方法 SpringBootTest public class AutoConfigurationTests {Autowiredprivate Gson gson;Autowiredprivate ApplicationContext applicationContext;Testpublic void testJson() {String json gson.toJson(Result.success());System.out.println(json);}//获取TokenParserTestpublic void testTokenParser() {System.out.println(applicationContext.getBean(TokenParser.class));}//获取HeaderParserTestpublic void testHeaderParser() {System.out.println(applicationContext.getBean(HeaderParser.class));}//获取HeaderGeneratorTestpublic void testHeaderGenerator() {System.out.println(applicationContext.getBean(HeaderGenerator.class));}}3、执行测试方法 异常信息描述 没有com.example.HeaderParser类型的bean 说明在Spring容器中没有找到com.example.HeaderParser类型的bean对象 思考引入进来的第三方依赖当中的bean以及配置类为什么没有生效 原因在我们之前讲解IOC的时候有提到过在类上添加Component注解来声明bean对象时还需要保证Component注解能被Spring的组件扫描到。SpringBoot项目中的SpringBootApplication注解具有包扫描的作用但是它只会扫描启动类所在的当前包以及子包。当前包com.itheima 第三方依赖中提供的包com.example扫描不到 那么如何解决以上问题的呢 方案1ComponentScan 组件扫描方案2Import 导入使用Import导入的类会被Spring加载到IOC容器中 3.3.1.2 方案一 ComponentScan组件扫描 在启动类加上注解ComponentScan({com.example,com.bowen}) ComponentScan({com.example,com.bowen}) SpringBootApplication public class SpringbootWebConfig2Application {public static void main(String[] args) {SpringApplication.run(SpringbootWebConfig2Application.class, args);} }如果采用以上这种方式来完成自动配置那我们进行项目开发时当需要引入大量的第三方的依赖就需要在启动类上配置N多要扫描的包这种方式会很繁琐。而且这种大面积的扫描性能也比较低。 缺点 使用繁琐性能低 结论SpringBoot中并没有采用以上这种方案。 3.3.1.3 方案二 Import导入 导入形式主要有以下几种 导入普通类导入配置类导入ImportSelector接口实现类 1). 使用Import导入普通类 Import({TokenParser.class})//导入普通类交给IOC容器管理 SpringBootApplication public class SpringbootWebConfig2Application {public static void main(String[] args) {SpringApplication.run(SpringbootWebConfig2Application.class, args);} }2). 使用Import导入配置类 配置类 Configuration public class HeaderConfig {Beanpublic HeaderParser headerParser(){return new HeaderParser();}Beanpublic HeaderGenerator headerGenerator(){return new HeaderGenerator();} }启动类 Import({HeaderConfig.class})//导入配置类交给IOC容器管理 SpringBootApplication public class SpringbootWebConfig2Application {public static void main(String[] args) {SpringApplication.run(SpringbootWebConfig2Application.class, args);} }测试类 SpringBootTest public class AutoConfigurationTests {Autowiredprivate ApplicationContext applicationContext;//获取HeaderParserTestpublic void testHeaderParser() {System.out.println(applicationContext.getBean(HeaderParser.class));}//获取HeaderGeneratorTestpublic void testHeaderGenerator() {System.out.println(applicationContext.getBean(HeaderGenerator.class));}}执行测试方法 3). 使用Import导入ImportSelector接口实现类 ImportSelector接口实现类 public class MyImportSelector implements ImportSelector {public String[] selectImports(AnnotationMetadata importingClassMetadata) {//返回值字符串数组数组中封装了全限定名称的类return new String[]{com.example.HeaderConfig};} }启动类 Import(MyImportSelector.class) //导入ImportSelector接口实现类 SpringBootApplication public class SpringbootWebConfig2Application {public static void main(String[] args) {SpringApplication.run(SpringbootWebConfig2Application.class, args);} } 执行测试方法 使用Import注解通过这三种方式都可以导入第三方依赖中所提供的bean或者是配置类。 思考如果基于以上方式完成自动配置当要引入一个第三方依赖时是不是还要知道第三方依赖中有哪些配置类和哪些Bean对象 答案是的。 对程序员来讲很不友好而且比较繁琐 思考当我们要使用第三方依赖依赖中到底有哪些bean和配置类谁最清楚 答案第三方依赖自身最清楚。 结论我们不用自己指定要导入哪些bean对象和配置类了让第三方依赖它自己来指定。 怎么让第三方依赖自己指定bean对象和配置类 比较常见的方案就是第三方依赖给我们提供一个注解这个注解一般都以EnableXxxx开头的注解注解中封装的就是Import注解 4). 使用第三方依赖提供的 EnableXxxxx注解 第三方依赖中提供的注解 Retention(RetentionPolicy.RUNTIME) Target(ElementType.TYPE) Import(MyImportSelector.class) public interface EnableHeaderConfig { }在使用时只需在启动类上加上EnableXxxxx注解即可 EnableHeaderConfig SpringBootApplication public class SpringbootWebConfig2Application {public static void main(String[] args) {SpringApplication.run(SpringbootWebConfig2Application.class, args);} }执行测试方法 以上四种方式都可以完成导入操作但是第4种方式会更方便更优雅而这种方式也是SpringBoot当中所采用的方式。 源码跟踪 过程略 SpringBootApplication注解 SpringBootApplication 该注解标识在SpringBoot工程引导类上是SpringBoot中最重要的注解。该注解由三个部分组成 SpringBootConfiguration该注解与Configuration注解作用相同用来声明当前也是一个配置类。CommponentScan组件扫描默认扫描当前引导类所在包及其子包。EnableAutoConfigurationSpringBoot实现自动化配置的核心注解。 Conditional注解 Conditional 作用按照一定的条件进行判断在满足给定条件后才会注册对应的bean对象到Spring IOC容器中。位置方法、类Conditional本身是一个父注解派生出大量的子注解 ConditionalOnClass判断环境中是否有对应字节码文件才注册bean到IOC容器。ConditionalOnMissingBean判断环境中没有对应的bean类型 或 名称才注册bean到IOC容器。ConditionalOnProperty判断配置文件中有对应的属性和值才注册到bean和IOC容器。 3.4案例自定义starter 3.4.1场景 前面解析了SpringBoot中自动配置的原理下面就通过一个自定义starter案例来加深大家对于自动配置原理的理解。首先介绍一下自定义starter的业务场景再来分析一下具体的操作步骤。 所谓starter指的就是SpringBoot当中的起步依赖。在SpringBoot当中已经给我们提供了很多的起步依赖了我们为什么还需要自定义 starter 起步依赖这是因为在实际的项目开发当中我们可能会用到很多第三方的技术并不是所有的第三方的技术官方都给我们提供了与SpringBoot整合的starter起步依赖但是这些技术又非常的通用在很多项目组当中都在使用。 业务场景 我们前面案例当中所使用的阿里云OSS对象存储服务现在阿里云的官方是没有给我们提供对应的起步依赖的这个时候使用起来就会比较繁琐我们需要引入对应的依赖。我们还需要在配置文件当中进行配置还需要基于官方SDK示例来改造对应的工具类我们在项目当中才可以进行使用。大家想在我们当前项目当中使用了阿里云OSS我们需要进行这么多步的操作。在别的项目组当中要想使用阿里云OSS是不是也需要进行这么多步的操作所以这个时候我们就可以自定义一些公共组件在这些公共组件当中我就可以提前把需要配置的bean都提前配置好。将来在项目当中我要想使用这个技术我直接将组件对应的坐标直接引入进来就已经自动配置好了就可以直接使用了。我们也可以把公共组件提供给别的项目组进行使用这样就可以大大的简化我们的开发。 在SpringBoot项目中一般都会将这些公共组件封装为SpringBoot当中的starter也就是我们所说的起步依赖。 在实际开发中经常会定义一些公共组件提供给各个项目团队使用。而在SpringBoot的项目中一般会将这些公共组件封装为SpringBoot的Starter。 Mybatis提供了配置类并且也提供了springboot会自动读取的配置文件。当SpringBoot项目启动时会读取到spring.factories配置文件中的配置类并加载配置类生成相关bean对象注册到IOC容器中。 结果可以直接在SpringBoot程序中使用Mybatis自动配置的bean对象。 在自定义一个起步依赖starter的时候按照规范需要定义两个模块 starter模块进行依赖管理[把程序开发所需要的依赖都定义在starter起步依赖中]autoconfigure模块自动配置 将来在项目当中进行相关功能开发时只需要引入一个起步依赖就可以了因为它会将autoconfigure自动配置的依赖给传递下来。 3.4.2需求 需求自定义aliyun-oss-spring-boot-starter完成阿里云OSS操作工具类AliyunOSSUtils的自动配置。 目标引入起步依赖引入之后要想使用阿里云OSS注入AliyunOSSUtils直接使用即可。 步骤 创建aliyun-oss-spring-boot-starter模块创建aliyun-oss-spring-boot-autoconfigure模块在starter中引入该模块在aliyun-oss-spring-boot-autoconfigure模块中的定义自动配置功能并定义自动配置文件META-INF/spring/xxx.imports 示例 创建aliyun-oss-spring-boot-starter模块 选择SpringBoot版本2.7.6 删除不必要的文件留下pom.xml文件不要学黑马教程随便删pom.xml看不懂不要删看明白了在删 创建aliyun-oss-spring-boot-autoconfigure模块在starter中引入该模块 选择SpringBoot版本2.7.6 在aliyun-oss-spring-boot-autoconfigure模块删除不必要的文件留下src、pom.xml文件 在aliyun-oss-spring-boot-autoconfigure模块中的定义自动配置功能 在这个pom.xml文件中引入阿里云的依赖和配置文件的依赖 !--阿里云OSS-- dependencygroupIdcom.aliyun.oss/groupIdartifactIdaliyun-sdk-oss/artifactIdversion3.15.1/version /dependency !--配置文件的依赖-- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdversion2.7.16/version /dependency在aliyun-oss-spring-boot-autoconfigure模块下复制AliOSS工具包AliOSSUtils.java该工具包直接从上一个项目中拷贝即可 package com.aliyun.oss;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile;import java.io.IOException; import java.io.InputStream; import java.util.UUID;/*** 阿里云 OSS 工具类*/Componentpublic 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(.));//上传文件到 OSSOSS ossClient new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);ossClient.putObject(bucketName, fileName, inputStream);//文件访问路径String url endpoint.split(//)[0] // bucketName . endpoint.split(//)[1] / fileName;// 关闭ossClientossClient.shutdown();return url;// 把上传到oss的路径返回}}AliOSSAutoConfiguration.java package com.aliyun.oss;import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;/*** ClassName AliOSSAutoConfiguration* Description TODO* Author Bowen* Date 2023/12/5 16:36* Version 1.0**/ Configuration EnableConfigurationProperties(AliOSSProperties.class) public class AliOSSAutoConfiguration {Beanpublic AliOSSUtils aliOSSUtils(AliOSSProperties aliOSSProperties){AliOSSUtils aliOSSUtils new AliOSSUtils();aliOSSUtils.setAliOSSProperties(aliOSSProperties);return aliOSSUtils;} }AliOSSProperties.java package com.aliyun.oss;import org.springframework.boot.context.properties.ConfigurationProperties;/*** ClassName AliOSSProperties* Description 阿里云OSS的实体类* Author Bowen* Date 2023/11/29 23:27* Version 1.0**/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;} }定义自动配置文件META-INF/spring/xxx.imports在aliyun-oss-spring-boot-autoconfigure模块的resources目录下创建 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports com.aliyun.oss.AliOSSAutoConfiguration在aliyun-oss-spring-boot-starter模块的pom.xml文件引入aliyun-oss-spring-boot-autoconfigure dependencygroupIdcom.aliyun.oss/groupIdartifactIdaliyun-oss-spring-boot-autoconfigure/artifactIdversion0.0.1-SNAPSHOT/version /dependency最后使用黑马提供的资料中的测试工程 导入springboot-autoconfiguration-test模块引入自定义的阿里云OSS依赖 dependencygroupIdcom.aliyun.oss/groupIdartifactIdaliyun-oss-spring-boot-starter/artifactIdversion0.0.1-SNAPSHOT/version /dependency这里只需引入aliyun-oss-spring-boot-starter依赖即可根据依赖传递功能相当于同时引入了aliyun-oss-spring-boot-autoconfigure依赖 UploadController.java中使用Autowired注入AliOSSUtils最终上传到阿里云OSS存储拿到并返回url RestController public class UploadController {Autowiredprivate AliOSSUtils aliOSSUtils;PostMapping(/upload)public String upload(MultipartFile image) throws Exception {//上传文件到阿里云 OSSString url aliOSSUtils.upload(image);return url;}}在启动该项目前需要配置阿里云的AS #阿里云配置 aliyun:oss:endpoint: 地域节点accessKeyId: AccessKey IDaccessKeySecret: AccessKey SecretbucketName: 存储空间名称springboot启动~~~ 测试图片 使用Apipost进行测试 在阿里云OSS控制台查看
http://www.sadfv.cn/news/89373/

相关文章:

  • 樟木头电子网站建设报价平台推广引流
  • 网站认证必须做么如何查看网站的外链
  • 北京做微信网站医院网站建设运营方案
  • 电子专业毕设做网站厦门制作网页公司
  • 网站的物理结构佛山顺德网站建设公司哪家好
  • 南山网站公司小程序推广计划怎么赚钱
  • 百度推广整体优化网站三桥网站建设
  • 上海网站搭建西安工装装修公司排名
  • 建设银行网站公告岳阳公司网站制作
  • 深圳网站开发培训价格商业网站有什么作用
  • 做网站内容图片多大用jsp sqlserver做的购物网站
  • 做网站策划书建设游戏运营网站开展工作内容
  • 微信如何建网站关于推进公司网站开发的请示
  • 网站建设咨询问卷网站建设书店用户分几类
  • seo综合查询怎么进入网站扬州seo优化
  • iis6 建设网站浏览手机app定制开发多少钱
  • 预约网站如何自己做太原便宜做网站的公司哪家好
  • 凡科网免费网站域名注册平台戚里带崇墉
  • 婚礼网站怎么做网站建设新媒体运营
  • 触摸网站手机网页打不开百度网盘
  • php网站 configwordpress小工具编辑器
  • 微信怎么做自己的网站wordpress后台邓丽
  • 做啥类型网站xampp可以做网站吗
  • 网站制作步骤是什么wordpress初始设置
  • 网站大图轮播代码给wordpress添加图片不显示
  • 一小时做网站wordpress文章导入插件
  • 大连的网站制作公司黑马程序员python教程
  • 网站的维护和更新建设部注册师网站
  • 哪些客户需要做网站做任务免费得晋江币网站
  • 做网站对商家的好处列举免费域名注册的网站