spring之注解(一)概述
Spring的核心是依赖注入(DI),而依赖注入的基础是依赖信息的配置。这些配置称之为元数据。
在之前的的学习中。一直採用的是基于xml的配置,这些元数据配置在spring内部被注冊成为BeanDefinition,spring以此为模版创建bean和注入依赖。
从spring 2.0開始,spring依次增加了对注解型元数据配置的支持。自此我们有了第二种配置bean的方式。Spring包括非常多种注解,如我们比較熟悉的@AutoWired、@Compoent,另一些不太熟悉的如@Inject @Improt等。
分类
Spring包括了如此多的注解。致使刚開始学习的人对之望而生畏。对当中一些也比較模糊。因此能够对Spring的注解进行分类。
Spring的xml元数据配置的核心是bean定义、属性及其依赖的配置,因此也能够从这个角度对spring注解进行分为下面。首先见下图:
本篇先对这些注解做一下简单的梳理,然后在兴许的文章中,针对后三种做较为具体的说明。
类别概述
以下略微具体的进行说明下各个类别,并列举出大部分Spring支持的注解。
容器级别
容器级别指的是注解用来配置Spring容器的,相应于SpringXML配置文件,如
@Configuration作用在class上,其内能够定义非常多Bean
@Import引入其它Configuration
@ComponentScan 自己主动扫描Bean组件配置,和Configuration配合使用
Bean级别
Bean级别指的是被注解标记的对象(类或者方法),会向Spring容器注冊一个BeanDefinition,Spring以此创建Bean实例。
@component 它和其它被其注解的注解 如@Service等作用于一个class上。 能够定义一个bean
@Named 和以上类似,来自JSR-330
@Bean 和@Configuration 或者@component 配合使用
Bean属性级别
此类别指的是作用于bean的属性。如是否延迟载入,Scope等。
@Qualifier 常和@autowired
@Lazy 延迟载入
@Scope 定义bean的Scope
@Required 能够标注在Set方法上,说明此方法须要被运行,否则跑出异常,长和@autowired 配合使用
@PostConstruct and@PreDestroy 来自于JSR,作用于生命周期
依赖级别
Spring能够使用这些注解进行依赖注入,一般是自己主动的,或者借助一些辅助信息。
@autowired自己主动依赖注入,有几种方式,byType,byName等,通常和@ Qualifier配合使用
@Inject 来自JSR-330,和以上类似。JSR-330相关注解
@Resource和以上类似,JSR-250相关注解
@Value 原始类型注入
总结
以上简单的说明了下Spring支持的注解和其主要的作用,但到眼下为止都是纸上谈兵。可是对Spring注解建立整体的印象还是比較重要的。须要注意的是,Spring注解和 XML配置是相辅相成的,各自有优缺点,在实际应用中要依据实际情况来决定。下篇将具体的讲述本篇讲述的内容。
spring之注解(一)概述的更多相关文章
- Spring基于注解的配置概述
以下内容引用自http://wiki.jikexueyuan.com/project/spring/annotation-based-configuration.html: 从Spring 2.5开始 ...
- 【SSM 2】spring常用注解
声明:以下观点,纯依据个人目前的经验和理解,有不当之处,多指教! 一.基本概述 注解(Annotation):也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举 ...
- 关于spring事务注解实战
1.概述 spring的事务注解@Transaction 相信很多人都用过,而@Transaction 默认配置适合80%的配置. 本篇文章不是对spring注解事务做详细介绍,而是解决一些实际场景下 ...
- Spring的注解问题
Annotation(注解)概述 从JDK5.0开始, Java增加了对元数据(MetaData)的支持,也就是 Annotation(注解). Annotation其实就是代码里的特殊标记,它用于替 ...
- Spring - Spring 常用注解
概述 简单整理一些 Spring 的注解 这个算是一个 水一波 类型的整理 内容不全 分类可能有的地方不会太符合逻辑 而且时间也不太充裕 先把自己想写的写下来, 然后随缘整理吧 约定 版本 Sprin ...
- Spring MVC注解的一些案列
1. spring MVC-annotation(注解)的配置文件ApplicationContext.xml <?xml version="1.0" encoding=& ...
- Spring系列之Spring常用注解总结
传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件 ...
- spring @condition 注解
spring @condition注解是用来在不同条件下注入不同实现的 demo如下: package com.foreveross.service.weixin.test.condition; im ...
- spring mvc(注解)上传文件的简单例子
spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...
随机推荐
- HTML中常用的颜色词汇
white (白色). black(黑色) . blue(蓝色) . green(绿色) .red(红色) .yellow(黄色) . pink(粉色).gray(灰色).brown(棕色). gre ...
- Python 44 前端概述 、三剑客 、常用标签与分类
1.前端三剑客是哪三位?文件的后缀内容?在前端开发中的功能是什么? HTML: .htm .html 内容 CSS: .css 效果 JS: .js 行为 2.简述三剑客的主要 ...
- SpringCloud 之 Fegin —— 发送GET、POST请求以及文件上传
由于项目需要调用其他微服务的数据,首先想到的就是写一个http网络请求的工具类,但是想到在之前看springCloud的时候里面有这个Fegin可以实现,就顺便实践一下,虽然过程有点坎坷,好在都顺利解 ...
- 禁止tomcat扫描jar包的tld文件
禁止tomcat扫描jar包的tld文件tomcat/conf/logging.properties 取消注释org.apache.jasper.compiler.TldLocationsCache. ...
- Coursera公开课-Machine_learing:编程作业5
Regularized Linear Regression and Bias/Variance 大多数时候,我们使用机器学习方法得到的结果都不是特别理想,常见 欠拟合 和 过拟合 问题.通过一些变量画 ...
- 关于VM虚拟机在使用网络时与锐捷网络冲突的解决问题
在使用NAT网络模式的时候,锐捷会因为冲突强制关闭NAT服务,导致虚拟机无法上网,解决的办法是让NAT服务一直保持启动,写一个bat脚本来一直检测服务是否在运行,并且进行启动操作. 当不需要用虚拟机的 ...
- Inception搭建
Inception安装Inception是集审核.执行.回滚于一体的一个自动化运维系统,它是根据MySQL代码修改过来的,用它可以很明确的,详细的,准确的审核MySQL的SQL语句,它的工作模式和My ...
- 指定DIV局部刷新的简单实现,很简单,但是网上搜到的大部分都很复杂
脚本部分: <script type="text/javascript"> $(function () { setInterval(function () { $(&q ...
- C#访问Win 32的一些尝试
使用C#调用Win 32 Api大部分情况下基本只涉及到参数类型的转变,但在遇到Win 32 Api返回LPVOID *lpBuff 时会遇到一些解析遍历难题.lpBuff为二维指针,*lpBuff是 ...
- 虚拟DOM介绍
[转自]:https://www.jianshu.com/p/616999666920 为什么需要虚拟DOM 先介绍浏览器加载一个HTML文件需要做哪些事,帮助我们理解为什么我们需要虚拟DOM.web ...