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

外包公司 网站建设 深圳网络营销推广论文

外包公司 网站建设 深圳,网络营销推广论文,珠海网络网站建设,个人摄影网站模板自定义SpringBoot的starter 引言 starter命名格式: 官方的 starter 的命名格式为 spring-boot-starter-{xxxx} 比如spring-boot-starter-activemq 第三方我们自己的命名格式为 {xxxx}-spring-boot-starter。比如mybatis-spring-boot-starter。 如果我们忽略这种约定…

自定义SpringBoot的starter

引言

starter命名格式:

  • 官方的 starter 的命名格式为 spring-boot-starter-{xxxx} 比如spring-boot-starter-activemq
    第三方我们自己的命名格式为 {xxxx}-spring-boot-starter。比如mybatis-spring-boot-starter。
    如果我们忽略这种约定,是不是会显得我们写的东西不够“专业“。

实战

完整项目结构:
在这里插入图片描述

①导入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional>
</dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.18</version><scope>provided</scope>
</dependency>

②编写配置文件类(SmsProperties)

@ConfigurationProperties(prefix = "sms")
@Data
public class SmsProperties {private SmsMessage aliyun = new SmsMessage();private SmsMessage tencent = new SmsMessage();@Datapublic static class SmsMessage{/*** username 用户名*/private String userName;/*** 密码*/private String passWord;/*** 秘钥*/private String sign;/****/private String url;@Overridepublic String toString() {return "SmsMessage{" +"userName='" + userName + '\'' +", passWord='" + passWord + '\'' +", sign='" + sign + '\'' +", url='" + url + '\'' +'}';}}
}

@ConfigurationProperties注解上配置的prefix 属性,主要用来区别各个组件的参数。

  • 这里有个小知识点需要注意下当我们在配置文件输入sms我们的idea会提示这个sms有哪些属性可以配置,以及每个属性的注释都有标记,建议的话注释还是写英文,这样会显得你比较专业。
    如果想要把此处字段上的注释展示出来,则需要导入
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional>
</dependency>

效果:
在这里插入图片描述

③编写自动配置类

@EnableConfigurationProperties(value = SmsProperties.class)
@Configuration
public class SmsAutoConfiguration  {/***  阿里云发送短信的实现类* @param smsProperties* @return*/@Beanpublic AliyunSmsSenderImpl aliYunSmsSender(SmsProperties smsProperties){return new AliyunSmsSenderImpl(smsProperties.getAliyun());}/*** 腾讯云发送短信的实现类* @param smsProperties* @return*/@Beanpublic TencentSmsSenderImpl tencentSmsSender(SmsProperties smsProperties){return new TencentSmsSenderImpl(smsProperties.getTencent());}
}

④接口及实现类

接口:

public interface SmsSenderService {boolean send(String msg);
}

实现类:

public class TencentSmsSenderImpl implements SmsSenderService{private SmsProperties.SmsMessage smsMessage;public TencentSmsSenderImpl(SmsProperties.SmsMessage smsProperties) {this.smsMessage = smsProperties;}@Overridepublic boolean send(String message) {System.out.println(smsMessage.toString()+"开始发送短信==》短信内容:"+message);return true;}
}
public class AliyunSmsSenderImpl implements SmsSenderService {private SmsProperties.SmsMessage smsMessage;public AliyunSmsSenderImpl(SmsProperties.SmsMessage smsProperties) {this.smsMessage = smsProperties;}@Overridepublic boolean send(String message) {System.out.println(smsMessage.toString()+"开始发送短信==》短信内容:"+message);return true;}
}

⑤让starter生效(应用集成)

starter集成应用有两种方式:

  1. 被动生效

通过SpringBoot的SPI机制

  • resources目录下新建一个META-INF目录
  • 在META-INF目录下创建spring.factories
  • spring.factories写入:

在这里插入图片描述

注意两行都是顶格写

  1. 主动生效(注解)

在starter组件集成到我们的Spring Boot应用时需要主动声明启用该starter才生效

  • 通过自定义一个@Enable注解然后在把自动配置类通过Import注解引入进来。
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import({SmsAutoConfiguration.class})
public @interface EnableSms {
}

使用的时候需要在启动类上面开启这个注解。
在这里插入图片描述

⑥mvn install打包到本地仓库

记得需要打包到本地仓库(别忘记将settings中的maven配置修改为本地的maven)

BUG:如果我们引入了自定义的starter之后,仍然找不到,则需要在自定义starter项目中添加插件(因为多了BOOT-INF)

<!--找不到自定义starter-->
<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><skip>true</skip></configuration>
</plugin>

⑦使用

  1. 新建项目,引入我们的starter依赖
<!--自定义starter-->
<dependency><groupId>com.zi</groupId><artifactId>sms-spring-boot-starter</artifactId><version>1.0.0</version>
</dependency>
  1. 编写配置文件
server:port: 8080
# 自定义starter中的配置
sms:aliyun:user-name: ziyipass-word: 123456url: https://aliyun.com/send
  1. 测试类中的启动类
@SpringBootApplication
//@EnableSms
public class StarterDemoApplication {@Autowiredpublic static void main(String[] args) {ConfigurableApplicationContext applicationContext = SpringApplication.run(StarterDemoApplication.class, args);AliyunSmsSenderImpl aliyunSmsSender = applicationContext.getBean(AliyunSmsSenderImpl.class);aliyunSmsSender.send("用阿里云发送短信");}}
  1. 启动Application,查看结果
    在这里插入图片描述

参考:
https://developer.aliyun.com/article/893073

http://www.hkea.cn/news/784427/

相关文章:

  • 驻马店市可以做网站的公司百度搜索竞价排名
  • 郑州市做网站吉林百度查关键词排名
  • 济宁网站建设seo抖音seo源码搭建
  • 茂名网站建设方案书简述seo和sem的区别
  • 江西网站做的好的企业文化百度指数在哪里看
  • 山东电商网站建设seo网站排名优化公司
  • 赤峰市做网站公司今日的最新消息
  • 上海最大的贸易公司seo网络推广机构
  • jsp 网站开发广告发布平台
  • b2c网站综合对比评价站长统计幸福宝
  • 网站建设意见做推广app赚钱的项目
  • 哈尔滨营销网站制作做外贸推广
  • 深圳网站建设外贸公司排名搜索热词排名
  • 网络科技公司招聘可靠吗seo多久可以学会
  • 企业网站建设的方案ppt网络营销的特点主要包括什么
  • 如何自行建设网站推广关键词优化
  • 建设学院网站百度收录关键词查询
  • 有关外贸的网站有哪些内容武汉抖音seo搜索
  • 娄底网站建设的话术深圳网站关键词排名优化
  • 福田大型商城网站建设seo营销方法
  • 网站开发专业就业指导企业网站设计与实现论文
  • 网络营销方式的思维导图seo关键词优化系统
  • wordpress访客ip记录福清市百度seo
  • 网站下载速度慢互联网广告推广公司
  • 电影网站空间配置网络营销的工具和方法有哪些
  • 包装设计网站免费百度seo搜索引擎优化厂家
  • 免费做公司网站sem对seo的影响有哪些
  • 网站空间购买费用关键词优化计划
  • 网站制作可以卖多少钱陕西网站建设制作
  • 深圳中小企业网站制作谷歌海外广告投放