怎样用vps做网站,六盘水市城乡建设局网站,弹幕网站用什么做,贵州网站建设吧目录
一、Starter机制
1. 是什么
2. 有什么用
3. 应用场景
二、短信发送案例
1. 创建
2. 配置
3. 编写
4. 形成依赖
6. 其他项目的使用
每篇一获 一、Starter机制
1. 是什么 SpringBoot中的starter是一种非常重要的机制(自动化配置)#xff0c;能够抛弃以前繁杂…目录
一、Starter机制
1. 是什么
2. 有什么用
3. 应用场景
二、短信发送案例
1. 创建
2. 配置
3. 编写
4. 形成依赖
6. 其他项目的使用
每篇一获 一、Starter机制
1. 是什么 SpringBoot中的starter是一种非常重要的机制(自动化配置)能够抛弃以前繁杂的配置将其统一集成进starter应用者只需要在maven中引入starter依赖SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置。starter让我们摆脱了各种依赖库的处理需要配置各种信息的困扰。 SpringBoot中的starter也可以说是一种用于简化依赖管理和配置的工具。它们是一组预先配置好的依赖项和自动配置的模块可以帮助开发人员快速地构建和部署SpringBoot应用程序。starter通常包含了所需的依赖项、自动配置和其他必要的设置使开发人员可以更轻松地开始开发应用程序而不必担心繁琐的配置和依赖项管理。SpringBoot提供了许多官方和第三方的starter涵盖了各种不同的功能和需求开发人员可以根据自己的需求选择合适的starter来加速应用程序的开发和部署过程。 2. 有什么用 在项目开发中使用SpringBoot Starter有以下几个好处 1. 简化配置SpringBoot Starter包含了一组预先配置好的依赖项和自动配置可以帮助开发人员快速地构建和部署SpringBoot应用程序减少了繁琐的配置工作。
2. 提高开发效率使用SpringBoot Starter可以减少开发人员在配置和依赖项管理上的时间和精力使开发人员可以更专注于业务逻辑的实现从而提高开发效率。
3. 统一依赖管理SpringBoot Starter可以帮助开发人员统一管理项目中的依赖项避免因为版本冲突或者配置错误而导致的问题简化了项目的依赖管理。
4. 提供标准化的配置SpringBoot Starter提供了一种标准化的配置方式使得不同的开发团队可以更容易地理解和维护项目的配置降低了项目的维护成本。 总之使用SpringBoot Starter可以帮助开发人员简化项目的配置和依赖管理提高开发效率降低项目的维护成本是项目开发中的一个很好的选择。 3. 应用场景 在我们的日常开发工作中可能会需要开发一个通用模块以供其它工程复用。SpringBoot就为我们提供这样的功能机制我们可以把我们的通用模块封装成一个个starter这样其它工程复用的时候只需要在pom中引用依赖即可由SpringBoot为我们完成自动装配。 常见应用场景 1通用模块-短信发送模块 2基于AOP技术实现日志切面 3分布式雪花IDLong转String解决精度问题 4微服务项目的数据库连接池配置 5微服务项目的每个模块都要访问redis数据库每个模块都要配置redisTemplat 在日常开发工作中常见的应用场景包括但不限于 Web应用开发开发基于Web的应用程序包括前端和后端开发使用各种框架和技术栈进行开发。 数据库开发设计和维护数据库编写SQL查询和存储过程进行数据库优化和性能调优。 API开发设计和开发RESTful API或GraphQL API用于不同系统之间的数据交换和通信。 移动应用开发开发iOS和Android应用程序使用Swift、Kotlin、React Native等技术进行开发。 容器化和微服务使用Docker、Kubernetes等技术进行应用的容器化和微服务化实现应用的高可用和可扩展性。 云平台开发在云平台上进行开发包括AWS、Azure、Google Cloud等利用云服务进行应用部署和管理。 DevOps实践实施持续集成、持续交付和持续部署自动化测试和部署流程提高开发和部署效率。 数据分析和人工智能开发数据分析和人工智能应用使用机器学习、深度学习等技术解决实际问题。 物联网应用开发开发连接物联网设备的应用程序处理传感器数据和控制设备。 安全和隐私保护实施应用安全和隐私保护措施包括身份认证、授权、数据加密等。 这些应用场景涵盖了软件开发的各个方面开发人员根据具体项目需求和技术栈选择相应的开发方式和工具。 二、短信发送案例
1. 创建 新建一个Starter(启动项)的SpringBoot项目创建如图 : 其中Starter(启动项)的SpringBoot项目的工件名命名规范 SpringBoot官方命名方式 spring-boot-starter-{模块名} 例如spring-boot-starter-web 自定义命名方式 {模块名}-spring-boot-starter 例如mystarter-spring-boot-starter 选择如图中的两项即可。 创建完成之后就直接修改maven设置设置为自己的本地仓库将maven引进项目中。 2. 配置 将application.properties的文件换成.yml后缀的文件 所用的依赖pom.xml 中引入 将其中的 dependency
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter-web/artifactId
/dependency 依赖修改为以下依赖 去掉其中的[ -web ] dependency
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter/artifactId
/dependency starter项目和SpringBoot工程结构没有什么区别。必须引入的依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional
/dependency pom.xml 所有依赖 ?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.CloudJun.depend/groupIdartifactIdsms-spring-boot-start/artifactIdversion0.0.1-SNAPSHOT/versionnamedepend/namedescriptiondepend/descriptionpropertiesjava.version1.8/java.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingspring-boot.version2.7.6/spring-boot.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependency!--starter项目的依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion${spring-boot.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.8.1/versionconfigurationsource1.8/sourcetarget1.8/targetencodingUTF-8/encoding/configuration/pluginplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion${spring-boot.version}/versionconfigurationmainClasscom.cloudjun.depend.DependApplication/mainClassskiptrue/skip/configurationexecutionsexecutionidrepackage/idgoalsgoalrepackage/goal/goals/execution/executions/plugin/plugins/build/project其starter项目中 application.yml 配置文件的配置如下 : #server:
# port: 8080
sms:key: 2000secret: 2023enable: true3. 编写 创建 SmsProperties 短信配置类 package com.cloudjun.depend;import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/*** author CloudJun* create 2023-12-14 17:55*/
Data
//Component定义组件交给spring进行管理
//Component
//prefix sms定义配置文件前缀如果在yml文件中有sms前缀将进行匹配获取
ConfigurationProperties(prefix sms)
public class SmsProperties {Value(${sms.key})private String key;//应用标识Value(${sms.secret})private String secret; //应用密钥private String enable; //是否启用}创建 ISmsService 接口 package com.cloudjun.depend.service;public interface ISmsService {/*** 发送短信* param phone 要发送的手机号* param data 要发送的内容*/void send(String phone, String data);}实现接口 SmsServiceImpl package com.cloudjun.depend.service;import com.cloudjun.depend.SmsProperties;public class SmsServiceImpl implements ISmsService {private SmsProperties smsProperties; //nullpublic SmsServiceImpl(SmsProperties smsProperties) {this.smsPropertiessmsProperties;}Overridepublic void send(String phone, String data) {String key smsProperties.getKey();String secret smsProperties.getSecret();System.out.println(接入短信系统Key key ,Secret secret);System.out.println(短信发送phone phone ,data data);}}创建一个控制类 SmsConfig service是否加载到spring里面去(true)加载就使用这个依赖项目(false)不加载就不使用这个依赖项目 package com.cloudjun.depend;import com.cloudjun.depend.service.ISmsService;
import com.cloudjun.depend.service.SmsServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;Configuration //表明当前类是一个配置类
EnableConfigurationProperties({SmsProperties.class})//开启配置加载加载指定的SmsProperties.class
//添加一个条件 (prefix):匹配.yml文件中sms前缀的 (name): 属性enable的 (havingValue): 值 true 为开启配置加载 false 为禁用配置加载
ConditionalOnProperty(prefix sms,name enable,havingValue true)
public class SmsConfig {//控制当前的service是否加载到spring里面去Autowiredprivate SmsProperties smsProperties;Bean //该Bean注解在方法上表示该方法在spring运行的时候自动执行该方法如有返回值会被放到spring的容器中public ISmsService smsService(){return new SmsServiceImpl(smsProperties);}}在resources下新建META-INF文件夹然后创建spring.factories文件 在该文件中加入如下配置该配置指定上步骤中定义的配置类为自动装配的配置 配置指定的配置类 org.springframework.boot.autoconfigure.EnableAutoConfiguration
com.cloudjun.depend.SmsConfig 在测试类中进行测试 DependApplicationTests package com.cloudjun.depend;import com.cloudjun.depend.service.ISmsService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;SpringBootTest
class DependApplicationTests {Autowiredprivate SmsProperties smsProperties;Autowiredprivate ISmsService iSmsService;Testvoid contextLoads() {iSmsService.send(158,IKUN);}}执行方法 展示的结果为 : 4. 形成依赖 将完成好的Starter项目安装下载成依赖操作如图 : 在右侧点击Maven打开生命周期双击执行install 找到我们的Maven本地仓库的路径在按照项目的组名进行查找这个依赖是否已经完成。 在pom.xml文件中可以查询组名 : 查询如图有生成的依赖即可。 6. 其他项目的使用 我们在打开一个项目在项目中增加这个依赖就可以使用短信发送的项目了 在新打开的项目中增加引用短信发送的项目的依赖 dependencygroupIdcom.CloudJun.depend/groupIdartifactIdsms-spring-boot-start/artifactIdversion0.0.1-SNAPSHOT/version/dependency 这里的引用是短信发送的项目中pom.xml文件中对应的groupIdartifactIdversion 并且在新打开的项目中找到.yml文件增加配置 #定义应用
sms:key: 2000 #标识secret: 2023 #密钥enable: true #true 启用 false 禁用 在新打开的项目中进行测试使用 每篇一获 学习以上这些技术可以为我们带来很多收获包括但不限于 1. 扩展技术视野学习不同的技术和工具可以帮助我们拓宽技术视野了解不同领域的发展趋势和最佳实践。
2. 提升解决问题的能力掌握多种技术和工具可以帮助我们更好地解决复杂的问题选择合适的技术栈和解决方案。
3. 增强适应能力学习多种技术可以增强我们的适应能力更快速地适应新的工作环境和项目需求。
4. 提高职业竞争力掌握多种技术和工具可以提高我们在职场上的竞争力更容易找到理想的工作机会。
5. 促进跨团队合作了解多种技术可以更好地与其他团队成员合作促进跨团队的协作和沟通。
6. 增加创新思维学习多种技术可以激发我们的创新思维帮助我们更好地解决问题和提出新的解决方案。 总之学习多种技术可以为我们带来丰富的收获有助于提升个人能力和职业发展。