初识SpringBoot Starter

什么是Starter

starter 是springboot 的核心,每个starter负责实现特定的功能,使用者只需引入starter即可自动配置,无需关心框架整合带来的问题。

Starter 项目结构

src
 |- main
     |- java
     |- resources
          |- META-INF
               |--spring.factories
pom.xml

spring.factories

## Initializers
## ApplicationContextInitializer接口的作用是可以在ApplicationContext初始化之前,对Spring上下文属性进行修改,既refresh()前的一个钩子函数。
org.springframework.context.ApplicationContextInitializer

## Application Listeners
## ApplicationListener 是Spring的监听器,可以通过对Spring上下文发送消息事件(由ApplicationContext. publishEvent进行消息发送),由对应的监听器进行捕获处理。 
org.springframework.context.ApplicationListener

## Auto Configuration Import Listeners
## 当Spring使用ConfigurationClassParser加载完所有@Configuration后会再一次使用AutoConfigurationImportSelector排除所有不符合条件的@Configuration,排除完后则回调所有AutoConfigurationImportListener的监听器。可相当于加载并过滤完@Configuration后的钩子回调。
org.springframework.boot.autoconfigure.AutoConfigurationImportListener

# Auto Configuration Import Filters
# 为 org.springframework.boot.autoconfigure.EnableAutoConfiguration定义的所有配置类增加ImportFilter来决定是否进行配置
org.springframework.boot.autoconfigure.AutoConfigurationImportFilter

# Auto Configure
# 定义自动装配config类,当系统引入该jar包时, spring上下文将初始化这些config类
org.springframework.boot.autoconfigure.EnableAutoConfiguration

# Failure analyzers
# 当spring bean的调用方法抛出特定异常时由自定义的特定FailureAnalyzer进行捕获并且进行处理。
org.springframework.boot.diagnostics.FailureAnalyzer

pom.xml

之后的章节中只写<dependencies> 节点

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
  </parent>
  
  <modelVersion>4.0.0</modelVersion>  
  <name>demo-spring-boot-starter</name>
  <groupId>com.v5ba</groupId>
  <artifactId>demo-spring-boot-starter</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
    </dependency>
  </dependencies>
</project>

官方starter

  • spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置、日志和YAML。
  • spring-boot-starter-actuator 帮助监控和管理应用。
  • spring-boot-starter-amqp 通过spring-rabbit来支持AMQP协议(Advanced Message Queuing Protocol)。
  • spring-boot-starter-aop 支持面向方面的编程即AOP,包括spring-aop和AspectJ。
  • spring-boot-starter-artemis 通过Apache Artemis支持JMS的API(Java Message Service API)。
  • spring-boot-starter-batch 支持Spring Batch,包括HSQLDB数据库。
  • spring-boot-starter-cache 支持Spring的Cache抽象。
  • spring-boot-starter-cloud-connectors 支持Spring Cloud Connectors,简化了在像Cloud Foundry或Heroku这样的云平台上连接服务。
  • spring-boot-starter-data-elasticsearch 支持ElasticSearch搜索和分析引擎,包括spring-data-elasticsearch。
  • spring-boot-starter-data-gemfire 支持GemFire分布式数据存储,包括spring-data-gemfire。
  • spring-boot-starter-data-jpa 支持JPA(Java Persistence API),包括spring-data-jpa、spring-orm、hibernate。
  • spring-boot-starter-data-MongoDB 支持MongoDB数据,包括spring-data-mongodb。
  • spring-boot-starter-data-rest 通过spring-data-rest-webmvc,支持通过REST暴露Spring Data数据仓库。
  • spring-boot-starter-data-solr 支持Apache Solr搜索平台,包括spring-data-solr。
  • spring-boot-starter-freemarker 支持FreeMarker模板引擎。
  • spring-boot-starter-groovy-templates 支持Groovy模板引擎。
  • spring-boot-starter-hateoas 通过spring-hateoas支持基于HATEOAS的RESTful Web服务。
  • spring-boot-starter-hornetq 通过HornetQ支持JMS。
  • spring-boot-starter-integration 支持通用的spring-integration模块。
  • spring-boot-starter-jdbc 支持JDBC数据库。
  • spring-boot-starter-jersey 支持Jersey RESTful Web服务框架。
  • spring-boot-starter-jta-atomikos 通过Atomikos支持JTA分布式事务处理。
  • spring-boot-starter-jta-bitronix 通过Bitronix支持JTA分布式事务处理。
  • spring-boot-starter-mail 支持javax.mail模块。
  • spring-boot-starter-mobile 支持spring-mobile。
  • spring-boot-starter-mustache 支持Mustache模板引擎。
  • spring-boot-starter-Redis 支持Redis键值存储数据库,包括spring-redis。
  • spring-boot-starter-security 支持spring-security。
  • spring-boot-starter-social-facebook 支持spring-social-facebook
  • spring-boot-starter-social-linkedin 支持pring-social-linkedin
  • spring-boot-starter-social-twitter 支持pring-social-twitter
  • spring-boot-starter-test 支持常规的测试依赖,包括JUnit、Hamcrest、Mockito以及spring-test模块。
  • spring-boot-starter-thymeleaf 支持Thymeleaf模板引擎,包括与Spring的集成。
  • spring-boot-starter-velocity 支持Velocity模板引擎。
  • spring-boot-starter-web S支持全栈式Web开发,包括Tomcat和spring-webmvc。
  • spring-boot-starter-websocket 支持WebSocket开发。
  • spring-boot-starter-ws 支持Spring Web Services。
  • spring-boot-starter-actuator 增加了面向产品上线相关的功能,比如测量和监控。
  • spring-boot-starter-remote-shell 增加了远程ssh shell的支持。
  • spring-boot-starter-jetty 引入了Jetty HTTP引擎(用于替换Tomcat)。
  • spring-boot-starter-log4j 支持Log4J日志框架。
  • spring-boot-starter-logging 引入了Spring Boot默认的日志框架Logback。
  • spring-boot-starter-tomcat 引入了Spring Boot默认的HTTP引擎Tomcat。
  • spring-boot-starter-undertow 引入了Undertow HTTP引擎(用于替换Tomcat)。
本文链接:https://www.dzdvip.com/34572.html 版权声明:本文内容均来源于互联网。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 395045033@qq.com,一经查实,本站将立刻删除。
(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年7月11日 23:09
下一篇 2022年7月11日 23:17

相关推荐

  • 运动服品牌排行榜前十名(运动服品牌哪个好)

    运动服我们又可以将其认作是休闲服以及运动场上竞赛专用服饰,根据每场比赛赛事的不同,相对应地运动服装从功能性以及设计上有着本质地差别,今日本文中提到的均为日常可以穿着的运动服。 在当下如此这般快节奏的生活模式中,人们的身心健康需要摆在首位,只有身体健康了才可以继续向前努力工作,因此运动健身就显得尤为重要,在运动健身之前专业的运动服饰也是不可抗力的。 每个人在运动之时,我们体内都会将脂肪转化成热能,甚至出现出汗的现象,因此在夏天户外运动之时,我们所穿着的运动服一定要以轻薄便捷以及速干为主,在秋冬寒冷时进行户外运动,我们需要考量的是保存体内散发出的热量,且可以让人体的汗液尽快排除,避免在体内引发湿气,因此选择的运动服一定要切合当下需求,运动服也可以保护运动者在运动时避免身体机能受到损害,为了方便运动者运动,运动服大部分都较为修身,过于宽大肥硕的衣服会和运动场上的器械造成冲撞,从而对人体造成伤害,即便是小心翼翼避免了冲撞现象,多余的面料也会和空气产生响应,从而加大阻力,对运动者的运动造成影响。 目前市面上运动服面料都较为类似,而当下的消费者也不仅仅只是在意运动服的功能性,更多的是在意运动服的设计款式是否符合自己的心意,本文将当下潮流的十大运动服品牌进行阐述,希望可以给正在选择运动服的消费者给予帮助。 1 、Adidas 阿迪达斯(德国) 阿迪达斯(adidas)创始人是阿道夫·阿迪·达斯勒(Adolf Adi Dassler),现如今已然成为了全球著名的运动品牌,三条平行间条的logo标志已然嵌入了广大消费者的内心,甚至不少的消费者表示看到四条杠的运动品牌,都会觉得是在抄袭阿迪达斯,可见其在市场上的地位,有人将这三条线称之为胜利的三条线。有很多的运动品牌后来都是模仿阿迪达斯的版型设计。阿迪达斯具有自己的加工工厂,每年会定期定量出产出一大批的面料,这些面料符合了当年季度的出产量之后就会将这批次的面料销毁,不会使其流到面料市场上,因此有许多的仿牌只能模仿阿迪的外形,实质上的面料材质都存在差异。 阿迪达斯(adidas)在许多大规模的运动会上都作为供应商供给运动服,是一家公司 值得信赖的品牌。 2 、Anta 安踏 安踏是我国内2001兴起的一家体育用品专卖店销售品牌,在早些年时,安踏旗下主营的是运动鞋产品,运动鞋的品质受到了广大消费者的酷爱,以此积累了一定的粉丝基础,此后就开始…

    2022年4月3日
    73
  • 2B和2C企业如何快速产出高质量内容?

    内容营销是一个老生长谈的话题,相信大家在内容营销的领域已经听过非常多的理论和策略了,其价值和重要性就不需要多提了,作者总结了其甲方和乙方超过8年、负责过10多个不同产品的内容营销相关实战经验,分享一些更加落地和实战的技巧与案例。推荐对此感兴趣的伙伴阅读。 正如同一个成功的销售团队,首先需要破除对个别top sales的依赖。内容营销团队同理,如果只有某个、某几个(含老板/高管本身)才能写出“高质量”内容,那整体内容营销还有很大的提升空间。 仍然以销售团队与内容营销类比,批量产出内容,就像电销首先需要每天打够100个电话;而批量产出“高质量内容”,就像电销每天需要清洗出5个有效线索一样。没有数量追寻质量,无异于空中楼阁。 本文一共分为4个部分来展开: 为什么我们更需要大量60分的内容,而不是追求90分的内容? 让内容显得更加“高价值”的5个实战技巧 快速生产内容的秘密:内容流水线 实战案例:利用信息差批量产出优质内容 一、为什么我们更需要大量“60分”的内容 关于内容生产的部分,我想分享的第1个要点是,在许多时候我们应该降低对内容的要求。 这并不意味着我们的内容质量变差了(提升内容质量的技巧将在第3部分讲述),而是意味着我们要追求内容营销里面更高的ROI:降低对单篇内容的要求,换取更快速和更大量的内容产出效率。 如果我们把SEM和SEO对比,小红书的KOL投放与KOC素人投放对比,知乎或其他社区的广告投放与内容软文对比,我们会发现: 对于广告投放来说,因为所有的流量和曝光,都是平台直接给予的,因此我们要做好素材的优化,不断的提升素材的转化率,然后扩大投放。而差的素材没有意义,约等于浪费钱。 对于内容或者软文营销来说则不然,一个验证过的素材,可以快速在广告平台加大量级,快速投放,而一个内容运营的同事的时间是有限的,经过转化验证的内容并不能够马上变成1万篇内容。而一个显而易见的结论是发布的内容越多,获取的流量越大。 因此,我们应该如何看待内容营销数量与质量的关系? 我们回到获取平台流量的基础逻辑来看。有3点值得我们注意并利用: 内容平台一定会鼓励内容创作者发布内容,因此会为任何一个账号和还不错的内容分发一定的流量。而内容质量的判断也是要用自然流量去验证的。比如小红书来说,一篇笔记能带来大约100~200个浏览量,如果是一个新用户发布的笔记有流量扶持的情况下,甚至能够达到3…

    2021年11月26日
    12
  • 设计师该如何做好职业规划

    职场人的职业规划一直都很重要,想要不断地进步就要找到一个方向,并且朝着那个方向不断的努力;设计师在职业生涯中要不断的进步,就需要在各个方面进行提升,并且保持良好的心态;本文作者分享了关于设计师做职业规划的思考,我们一起来了解一下。 最近和朋友聊天,发现一个问题,就是无论你身处哪个阶段,都会被同一个问题困扰:如何做好职业规划?每个人或多或少都会对自己的职业规划感到迷茫,最近我也思考了我的职业规划,有一些想法和大家分享一下。   一、为什么要做职业规划 我的人生我做主!我们所做的每一件事情都是有目标的。小到吃饭的目标是为了吃饱,大到 20 年后我将成为什么样的人;一个没有职业规划的人就像在航海中没有灯塔的一艘渔船,不知你的归途是哪里。 职业规划是一条指引我们向前走的路,人生的终点有很多,如果随意走,你的职业生涯也会变得随机不可控,制定规划最好的时间就是现在。   二、职业生涯中的各个阶段 每个人职业生涯中都要经历 3 个阶段:迷茫期、瓶颈期、平静期。   1. 迷茫期 每个阶段的设计师都会有迷茫期,它会让你不知道下一步该怎么走,就怕自己走错了路,毁了几年的青春;这个问题其实很好解决,你去请教几个比你经验丰富的设计师,通过跟他们的沟通,你就会慢慢的清楚自己该往哪走,不该往哪走。 在迷茫期,做决定一定要慎重。不要今天觉得我要做视觉、明天要做动画;在这个时期很容易头脑发热,所以一定要理智一点,多听听别人的意见。   2. 瓶颈期 初级升中级,中级升高级,都会有瓶颈期。在这个时期,你会觉得特别累,压力特别大。这都是很正常的,这个时期属于你的一个蜕变期,在这个时期你要抓住任何机会。蜕变成功,你就进阶;蜕变失败,你只能等下一次蜕变。   3. 平静期 这个时期是最舒适的,没有迷茫期的焦虑,也没有瓶颈期的压力;但恰恰是这个时期,是你时间最充裕的时期。 人与人之间的差距就是在这个时期产生的。 时刻让自己处于战时学习状态,几年后,你会甩之前同级别人好几条街。 如何做好职业规划? 以下几点帮助你理清思绪,少走弯路:   三、了解自己 1. 我的优势有哪些 每个人都有自己独特的优势,哪怕觉得自己平平无奇,你也有一些技能或见识优于其他方面。了解自己的第一步就是清楚的知道自己的优势是什么,这些优势是不是还可以再变得更有优势?每个人独特的…

    2021年6月21日
    26
  • C++ 右值引用 和 移动构造函数

    一: 背景 最近在看 C++ 的右值引用和移动构造函数,感觉这东西一时半会还挺难理解的,可能是没踩过这方面的坑,所以没有那么大的深有体会,不管怎么说,这一篇我试着聊一下。 二: 右值引用 1. 它到底解决了什么问题? 在其他编程语言中,很少听到 右值引用 这个词,我个人感觉还是 C++ 这个 值类型 优先的语言基因决定的,我们都知道 值类型 作为方法参数或者返回值时会生成自身的副本,如果 值类型 很大,那一来一回生成若干个深复制的 临时对象 将会产生巨大的性能开销。 总结一句话:右值引用 就是尽可能的减少这中间 临时对象 个数,尤其是关联到 heap 上的对象,仅此而已。 2. 右值引用是个什么样子? 说到 右值引用 得先说什么是 右值,左值 , 左值 一般都是带有内存地址的变量,而 右值 一般是立即数或者运算过程中的临时对象,这种对象不会有地址值,是不是很绕,我举个例子吧。 int main() { int i = 10; int j = 11; int sum = i + j; } 10,11,(i+j) 属于右值,因为它本身没有内存地址,除非把它们放入到栈中或者堆中。 i,j,sum 属于左值,因为它们是线程栈上地址的标识符。 知道了 左右值 概念,接下来理解 左右值引用 就很简单了,既然是 引用,必然是多个变量指向同一个地址,对吧,修改下代码如下: int main() { int i = 10; int& k = i; //左值引用 int&& m = 10; //右值引用 } 接下来看下汇编代码: 33: int i = 10; 00FB182F mov dword ptr [ebp-0Ch],0Ah 34: int& k = i; 00FB182F mov dword ptr [ebp-0Ch],0Ah 00FB1836 lea eax,[ebp-0Ch] 00FB1839 mov dword ptr [ebp-18h],eax 36: int&& m = 10; 00FB183C mov dword ptr [ebp-30h],0Ah 00FB1843 lea eax,[ebp-30h] 00FB1846 mov dword ptr [ebp-24h],eax 从汇编代码看,它们是一模一样的,也就是说在…

    2022年7月25日
    10
  • 抖音显示地区,能不能不显示省份

    4月15日,抖音安全中心宣布,为维护真实有序的讨论氛围,减少冒充热点事件当事人、恶意造谣、蹭流量等不良行为,抖音拟在个人主页等位置显示账号IP属地,相关功能将在4月底进行测试,根据测试情况逐步在其它场景全量上线。 具体来看,平台展示的账号IP属地为最近一次发文或评论时的网络位置,境内展示到省(区、市),境外展示到国家(地区),也就是说,用户在哪里更新动态,其他人也能看得一清二楚。账号IP属地以运营商提供信息为准,该功能将强制打开,不支持手动开启或关闭。 说到公开IP属地,不少小伙伴都会联想到个人隐私,毕竟个人IP属地跟定位信息有关,在个人账号展示IP属地,相当于把自己的定位公之于众,平台强行展示用户IP,站在个人的角度上,有泄露隐私的隐患。 事实上,IP属地最多只能显示到区,并不能具体到哪个小区、哪号房,一个区的面积往少了算也有几十平方公里,远远扯不上个人隐私。再说了,IP属地显示这一功能不算十分完善,通过“伪装”手段还是可以改变的。真要涉及个人隐私的,还得是看个人IP地址,IP地址就属于个人范畴,能够显示用户的位置,平台肯定不会展示的。 如今互联网十分发达,信息流转速度极快,而且隐秘性较高。不少人觉得在互联网上畅所欲言,随意攻击他人也不需要承担什么后果,发言成本极低的互联网成为了不少喷子、造谣者的天堂。 最近大家都应该听过,一位上海女子给跑腿小哥打赏200元,被网暴跳楼。就因为一群网友不顾后果地攻击,逼得他人走上绝路,网暴者说不定还能逃之夭夭,不用负责任。小雷认为,互联网不是法外之地,在网上攻击他人应该要承担相应的责任,平台显示IP属地是一个很好的开始。 微博是最早显示IP属地的平台之一,如今知乎、抖音等网络平台都开始跟进IP属地显示,那些网暴、造谣、恶意蹭热度的账号的IP属地得以曝光,恶意诋毁、攻击他人,造谣蹭热度的用户应该会有所收敛。不得不说,微博在这方面开了个好头,希望其它网络平台也将跟进。 当然了,小雷建议大家不要光凭一个IP属地就断定用户的“成分”,判断一个人还得看言行,毕竟不是所有人都是“敌军”。

    2022年4月30日
    44
  • 长江存储是国企还是央企(长江存储苹果供应链公司)

    “长江存储不是国企也不是央企。长江存储即武汉长江存储科技有限责任公司,于2016年在武汉东湖新技术开发区登记成立,主要的经营范围包括半导体集成电路科技领域内的技术开发以及集成电路、相关产品的设计等。 苹果加速生产基地多元化布局,在印度新辟产线,生产最新旗舰型iPhone机种,Google也传出考虑将Pixel系列手机一到两成的产能,从大陆移转到印度。一时间,印度制造取代中国、甚至是外资加快撤离大陆,再度成为焦点新闻。 中国链结反而深化 苹果与Google转移产能已非新鲜事,纬创早在2017年就到印度设厂,代工生产较低阶iPhone,2018年中美贸易战开打后,苹果执行长库克多次呼吁供应商将产能转移至印度、越南等地,以规避供应链过度集中大陆的风险,大陆生产重镇角色显得风雨飘摇。 不过,产能迁移需要时间,也不如想像中容易。 《纽约时报》曾经报道,苹果部分高阶机种移往印度生产后,苹果对大陆依赖程度未降反升。关键在于大陆高阶技术人力与零组件供应商的重要性日益提升,加上大陆严厉的防疫清零政策,让苹果欧美高阶人力不愿赴大陆出差,逼使苹果必须大量聘雇大陆当地中高阶人才,并将决策权转移大陆员工,苹果供应链的中国链结反而深化。根GlobalData统计,今年以来苹果在大陆新聘员工相比2020年高出五成,其中多数都是曾受西方高等教育的大陆公民。 另一方面,近年来大陆零组件供应商逐渐切入苹果供应链,成为不可或缺的存在。过去iPhone虽在大陆生产制造,但大多数零组件来自美、日、韩等地,大陆负责附加价值最低端的组装流程,就附加价值而言,对iPhone的贡献度不高。但随着大陆技术的进步,一些重要的零组件,如面板、扬声器、电池与镜头模组等,已开始采用大陆本土企业设计制造产品。据统计,大陆对iPhone贡献度已从过去约3.6%,大幅提高至25%;在供应商方面,大陆(51家)去年更是首度超越台湾(48家),成为苹果最大供应商来源。 这足以证明,科技大厂想摆脱对中国的依赖多么困难,若加入大陆市场诱因,那么和中国说拜拜,就更是不容易,苹果最近一些政策就显得非常舍不得离开大陆。譬如,苹果可能不甩美国制裁禁令,最新iPhone 14的快闪记忆体晶片,将采用大陆最大记忆体晶片制造商长江存储的产品,就是一个重要讯号。 外商投资稳定成长 不可否认,大陆从90年代开始的全球化浪潮中受惠,要稳定经济发展,实现203…

    2022年9月19日
    68