当前位置:首页 > 科技  > 软件

Springboot之把外部依赖包纳入Spring容器管理的两种方式

来源: 责编: 时间:2023-11-08 09:10:03 377观看
导读前言在Spring boot项目中,凡是标记有@Component、@Controller、@Service、@Configuration、@Bean等注解的类,Spring boot都会在容器启动的时候,自动创建bean并纳入到Spring容器中进行管理,这样就可以使用@Autowired等注解

前言

在Spring boot项目中,凡是标记有@Component、@Controller、@Service、@Configuration、@Bean等注解的类,Spring boot都会在容器启动的时候,自动创建bean并纳入到Spring容器中进行管理,这样就可以使用@Autowired等注解,在需要使用bean的业务类中进行注入。这里起到关键作用的就是@ComponentScan,这是一个bean扫描注解,默认扫描的目录是启动类所在包下的所有包及子包,也就是说凡是标记了@Componetn等注解类,Spring boot都会自动创建bean纳入Spring容器管理。FOH28资讯网——每日最新资讯28at.com

问题

一个问题来了,是什么呢?如果我封装了一套公共的业务组件,也想把些组件类放到Spring容器里,方便在业务里注入使用,这时候应该怎么办呢?FOH28资讯网——每日最新资讯28at.com

解决方法

最先想到的就是,应该就是更新@ComponentScan的扫描路径了吧,除了这个还有没有更好方法呢?答案是有的,且听我细细道来的。FOH28资讯网——每日最新资讯28at.com

主要是两种方式:FOH28资讯网——每日最新资讯28at.com

第一种:Spring.factories

如果了解过Spring boot的自动装配的原理以及如何自定义自己的starter,对这个配置文件应该会很熟悉,Spring boot能够实现开箱即用,省去了许多繁琐的配置,spring-boot-autoconfigure.jar下的/META-INF/spring.factories配置文件起了关键作用。那个类里有什么呢?仔细会发现spring.factories中配置信息是key-value的形式,key是spring中预留的扩展点配置接口的全限定类名,vlue则是具体的配置类的全限定类名,如果有多个配置类,则以英文逗号隔开;FOH28资讯网——每日最新资讯28at.com

如果公共的业务组件封装好了,就可以在resources目录下,创建/META-INF/spring.factories配置文件,并实现Spring预留的扩展点配置接口,使用的时候引入到项目中,然后在Spring容器启动的时候,会读取classpath下所有的spring.factories中的配置类,然后纳入到Spring容器中。当然这个处理过程是很复杂的,这里不过多展开,我在网上找到了一张图,可以帮助你很好的理解整个过程,有兴趣的小伙们,不妨根据图上内容,再结合spring源码再深入研究一下。FOH28资讯网——每日最新资讯28at.com

图片图片FOH28资讯网——每日最新资讯28at.com

第二种:org.springframework.boot.autoconfigure.AutoConfiguration.imports

其实org.springframework.boot.autoconfigure.AutoConfiguration.imports文件功能和Sping.factories的作用是一样的,这个用法是Spring boot2.7以后出现的,目的也是为引入外部的jar,把外部bean纳入到Spring容器,实现外部组件与Spring的集成,主要的区别在于引入的方式有些不同,spring.factories这种方式是在resources下创建/META-INF/spring.factories配置文件,内部是key-value的形式,这种则是创建/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,内部是具体的要导入到Spring环境的中的配置类。FOH28资讯网——每日最新资讯28at.com

两种方式有一些区别,不过都是用来实现自动装配的。FOH28资讯网——每日最新资讯28at.com

mybatis与Springboot

SpringBoot和MyBatis的集成主要也是利用了SpringBoot的自动配置特性和MyBatis的映射特性。FOH28资讯网——每日最新资讯28at.com

在SpringBoot中,通过开启自动配置,系统会在ConfigurationClassPostProcessor这个BeanFactory的后置处理器中,读取spring.factories配置文件中的org.springframework.boot.autoconfigure.EnableAutoConfiguration,读取到所有的自动配置类进行注册。FOH28资讯网——每日最新资讯28at.com

而对于MyBatis,我们主要是通过MapperScan这个注解来注册Mapper。在SpringBoot中,如果某个类使用了@MapperScan注解,那么Spring会自动扫描该类所在的包,并将扫描到的Mapper接口注册到Spring容器中。这样,我们就可以在Service中使用@Autowired将Mapper注入,从而使用Mapper提供的方法对数据库进行操作。FOH28资讯网——每日最新资讯28at.com

此外,SpringBoot还集成了MyBatis的别名和类型处理器。这是通过扫描@Alias和@TypeAlias注解来实现的,它们可以帮助我们将类型进行转换,使得我们可以在MyBatis中使用更方便的类型,比如使用String代替硬编码的SQL语句。FOH28资讯网——每日最新资讯28at.com

示例

项目里也经常会用到reids,这里举一个实例,以把redis与Springboot的集成,封装成一个starter。FOH28资讯网——每日最新资讯28at.com

Redis在Springboot中的配置类FOH28资讯网——每日最新资讯28at.com

/** * Redis 配置类 */@AutoConfigurationpublic class RedisAutoConfiguration {    /**     * 创建 RedisTemplate Bean,使用 JSON 序列化方式     */    @Bean    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {        // 创建 RedisTemplate 对象        RedisTemplate<String, Object> template = new RedisTemplate<>();        // 设置 RedisConnection 工厂。 
                

本文链接:http://www.28at.com/showinfo-26-17638-0.htmlSpringboot之把外部依赖包纳入Spring容器管理的两种方式

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 在Javascript中为什么 0.1+0.2 不等于0.3 ? 源代码详细解析

下一篇: CSS这几个函数很实用,也很简单

标签:
  • 热门焦点
  • 影音体验是真的强 简单聊聊iQOO Pad

    大公司的好处就是产品线丰富,非常细分化的东西也能给你做出来,例如早先我们看到了新的vivo Pad2,之后我们又在iQOO Neo8 Pro的发布会上看到了iQOO的首款平板产品iQOO Pad。虽
  • 5月安卓手机好评榜:魅族20 Pro夺冠

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年5月1日至5月31日,仅限国内市场。第一名:魅族20 Pro好评率:97.50%不得不感慨魅族老品牌还
  • 十个简单但很有用的Python装饰器

    装饰器(Decorators)是Python中一种强大而灵活的功能,用于修改或增强函数或类的行为。装饰器本质上是一个函数,它接受另一个函数或类作为参数,并返回一个新的函数或类。它们通常用
  • 三万字盘点 Spring 九大核心基础功能

    大家好,我是三友~~今天来跟大家聊一聊Spring的9大核心基础功能。话不多说,先上目录:图片友情提示,本文过长,建议收藏,嘿嘿嘿!一、资源管理资源管理是Spring的一个核心的基础功能,不
  • 从零到英雄:高并发与性能优化的神奇之旅

    作者 | 波哥审校 | 重楼作为公司的架构师或者程序员,你是否曾经为公司的系统在面对高并发和性能瓶颈时感到手足无措或者焦头烂额呢?笔者在出道那会为此是吃尽了苦头的,不过也得
  • 最“俊美”淘宝卖家,靠直播和短视频圈粉,上架秒光,年销3000万

    来源 | 电商在线文|易琬玉编辑|斯问受访店铺:Ringdoll戒之人形图源:微博@御座的黄山、&ldquo;Ringdoll戒之人形&rdquo;淘宝店铺有关外貌的评价,黄山已经听累了。生于1985年的他,哪
  • 品牌洞察丨服务本地,美团直播成效几何?

    来源:17PR7月11日,美团App首页推荐位出现&ldquo;美团直播&rdquo;的固定入口。在直播聚合页面,外卖&ldquo;神枪手&rdquo;直播间、美团旅行直播间、美团买菜直播间等均已上线,同时
  • 东方甄选单飞:有些鸟注定是关不住的

    作者:彭宽鸿来源:华尔街科技眼&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;东方甄选创始人俞敏洪带队的&ldquo;7天甘肃行&rdquo;直播活动已在近日顺利收官。成立后一
  • 联想小新Pad Pro 12.6将要推出,搭载高通骁龙 870 处理器

    联想小新Pad Pro 12.6将于秋季新品会上推出,官方按照惯例直接在发布会前给出了机型的所有参数。联想小新 Pad Pro 12.6 将搭载高通骁龙 870 处理器,重量为 5
Top