我们看几个比较常见的Annotation,便于后面更好的理解spring框架的奥秘做准备

@ComponentScan

对应XML配置形式中的<context: component-scan>元素,用于配合一些元信息Java Annotation,比如@Component和@Repository等,将标注了这些元信息Annotation的bean定义类批量采集到Spring的IoC容器中。

我们可以通过basePackages等属性来细粒度定制@ComponentScan自动扫描的范围,如果不指定,则默认Spring框架实现会从声明@ComponentScan所在的pakcage进行扫描。

@ComponentScan是SpringBoot框架魔法得以实现的一个关键组件,大家可以重点关注,我们后面还会遇到它。

@PropertySource 与 @PropertySouorces

@PropertySource用于从某些地方加载*.properties文件内容,并将其中的属性加载到IoC容器中,便于填充一些bean定义属性的占位符(placeholder),当然,这需要PropertySourcesPlaceholderConfigurer的配合。

如果我们使用Java8或者更高版本开发,那么,我们可以并行声明多个@PropertySource:

@Configuration
@PropertySource("classpath:1.properties")
@PropertySource("classpath:2.properties")
@PropertySource("...")
public class XConfiguration{...
}

如果我们使用低于Java8版本的Java开发Spring应用,又想声明多个@PropertySource,则需要借助@PropertySources的帮助了:

@PropertySources({@PropertySources("classpath:1.properties"),@PropertySource("classpath:2.properties"),...
})
public class XConfiguration{...
}

@Import 与@ImportResource

在XML形式的配置中,我们通过的形式将多个分开的容器配置合到一个配置中,在JavaConfig形式的配置中,我们则使用@Import这个Annotation完成同样的目的:

@Configuration
@Import(MockConfiguration.class)
public class XConfiguration{...
}

@Import只负责引入JavaConfig形式定义的IoC容器配置,如果有一些遗留的配置或者遗留系统需要以XML形式来配置(比如Dubbo框架),我们依然可以通过@ImportResource将它们一起合并到当前JavaConfig配置的容器中:

@Configuration
@Import(MockConfiguration.class)
@ImportResource("...")
public class XConfiguration{...
}

Spring框架的本质:4那些高曝光率的Annotation相关推荐

  1. APP高曝光率到智能化投放,SDK猫眼信息流广告的投放策略!

    ​随着移动设备和社交媒体的普及,越来越多的人开始通过信息流获取新闻.娱乐和其他内容.信息流广告是一种以自然的方式呈现在用户浏览的内容中,以吸引用户点击的广告形式. 除此之外,各种类型的媒体也开始将其自 ...

  2. SpringBoot-探索回顾Spring框架本质

    自始至终,SpringBoot框架都是为了能够帮助使用Spring框架的开发 快速高效地构建 一个个基于Spring框架以及Spring生态体系的应用解决方案.要深刻理解SpringBoot框架,首先 ...

  3. 提高商品曝光率增加销量,从这几点做起

    高曝光率可以为商家带来高的点击量,分销商城首页的商品被人看到的可能性更大,准确的产品被人搜到的可能性更大.所以要有高的曝光率就需要做好产品相关的准备工作,具体有哪些呢?下面就由小编为大家分享提高分销商 ...

  4. Java面试前看看一篇就不怕问Spring框架了

    1 Spring核心组件 一句话概括:Spring是一个轻量级.非入侵式的控制反转(IoC)和面向切面(AOP)的框架. Spring 版本 JDK版本 1.x 1.3:引入了动态代理机制,AOP 底 ...

  5. 阿里三面让我现场改造Spring框架,明天带他去爬山!

    作为一个Java程序员,提到开源框架,Spring无疑是绕不过去的门槛,相信大家对它都不陌生,或多或少都用过. 但是如果谈到改造Spring框架,实现它的自定义扩展,以及大厂面试必问的源码,很多人就会 ...

  6. 那些高曝光的Annotation(@ComponentScan、@PropertySource与@PropertySources、@Import与ImportResource)

    那些高曝光的Annotation 1.@ComponentScan @ComponentScan对应于XML配置形式中的< context:component-scan >元素,用于配合一 ...

  7. ❤️六万字《Spring框架从入门到精通》(建议收藏)❤️

    ❤️ Spring 代码:https://github.com/Donkequan/Spring-Study ❤️ 希望各位博友三连+关注!!! 1.简介 spring理念:是现有的技术更加容易使用, ...

  8. spring框架_IOC_DI_AOP_MVC

    本文注解总结:注解收录集 Spring框架 一.Spring介绍 二.Spring-`IOC` 2.1 IOC调用原理图 2.2 Spring-IOC 配置文件方式 2.2.1 准备Dog类 2.2. ...

  9. 2022年Java应届生面试之Spring框架基础知识

    前言:工作的原因,最近没有及时更新相关系列.很抱歉!在复习Spring框架的同时也别忘了j2ee的相关知识理论wo~ 大家好!我是JAVA 中的Spring框架,我是一个开源的容器性质的轻量级框架. ...

  10. spring框架_03

    目录 文章目录 目录 第一章 AOP概述 1.什么是AOP? [1]AOP定义 [2]具象化理解 2.AOP的优势及使用场景 [1]优势 [2]使用场景 3.AOP实现原理 第二章 代理模式 1.代理 ...

最新文章

  1. 微软资深算法工程师为AI初学者量身打造的机器学习入门书上市啦!
  2. TensorFlow 调用预训练好的模型—— Python 实现
  3. DNS攻击的主要方式
  4. Mageia 7 Beta 3 发布,Mandriva Linux 社区分支
  5. Bzoj4480: [Jsoi2013]快乐的jyy 广义后缀自动机 倍增 哈希 manacher
  6. Nginx源码分析 - 主流程篇 - 多进程实现(14)
  7. linux 清空history以及记录原理
  8. c#调用python脚本效率_C# 调用python程序脚本(IronPython)
  9. WinAPI之ReleaseSemaphore
  10. 区块链重要基础知识2——哈希函数的原理以及应用于区块头部
  11. Vue脚手架、镜像源下载及使用
  12. 《机器学习实战:基于Scikit-Learn、Keras和TensorFlow第2版》-学习笔记(9):无监督学习技术
  13. apex 安装/使用 记录
  14. 少吃柿子、山楂、黑枣,警惕鞣酸
  15. 2021年“亿级”体量产品的五大发展趋势
  16. 树莓派+USB摄像头+Yeelink--5分钟内DIY你自己的家庭监控
  17. UVa Online Judge 工具網站
  18. 智慧风电:数字孪生 3D 风机智能设备运维
  19. 【2023 年第十三届 MathorCup 高校数学建模挑战赛】 B 题 城市轨道交通列车时刻表优化问题 42页论文及代码
  20. Leveldb学习笔记:leveldb的使用与原理探究

热门文章

  1. 【mobile】安卓图案解锁尝试次数过多导致 要解锁需要GOOGLE账户登录,解决方案...
  2. [转]如何用SQL命令修改字段名称
  3. Bean被IoC容器销毁后还能使用吗?
  4. Linux之常用操作命令总结一
  5. CGI,FASTCGI,PHP-CGI,PHP-FPM 概念
  6. Linux20180421五周第二次课(4月19日)
  7. IEEE-SA董事刘东:开放+开源将带来新一波SDNFV创新
  8. Linux重定向和管道的基础学习
  9. 你的服务器安全么?--服务器防渗透(1)
  10. Windows UWP开发系列 – 控件默认样式