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 ...
随机推荐
- Springboot+hibernate简单的增删改查
1.创建好项目之后在配置端口号(也可以不用配置,默认端口8080) #server server.port= server.tomcat.uri-encoding=utf- 2.配置mysql #My ...
- Jmeter_Beanshell解析并提取json响应
1:前置条件 将fastjson-1.2.49.jar包置于jmeter的lib目录下,并将该jar包添加到测试计划的Library中:否则会报:Typed variable declaration ...
- 虚拟机下不能运行gazebo
bug描述: VMware: vmw_ioctl_command error Invalid argument. 解决方式:设置环境变量 export SVGA_VGPU10=0 或者 echo &q ...
- CSS元素水平垂直居中的方法
1. 元素水平居中 1.1 设置父元素的属性 text-align: center; 说明:此属性只针对父元素的子元素为内联元素时有效,比如:img,input,select,button等(行内 ...
- jQuery学习笔记之DOM操作、事件绑定(2)
jQuery学习笔记之DOM操作.事件绑定(2) --------------------学习目录------------------------ 4.DOM操作 5.事件绑定 源码地址: https ...
- 安卓通过UDP协议传输数据,中文乱码的问题
公司最近需要往智能家居方面发展,需要用到UDP协议传输数据,在网上找到了一些资料,但是发现传输中文的时候有乱码的现象,经过我多番捣鼓,终于解决了这个问题,下面贴上关键代码 客户端: public cl ...
- 自定义View实现拖动小圆球,并随机改变其颜色
//简单实现package com.example.demo1; import android.content.Context;import android.graphics.Canvas;impor ...
- 如何查看Linux的CPU负载
哪些工具可以查看 CPU 负载? 可以使用 top 命令.uptime 命令,特别是 top 命令,功能强大,不仅仅可以用来查看 CPU 负载. CPU 负载怎么理解?是不是 CPU 利用率? 要区别 ...
- 解决postman https请求无返回数据的问题
1.点击右上角的扳手图标 2.点击settings 3.点击general 4.把 ssl certificate verification这项点击关闭
- 明明引用了jquery,js还是报错
先引jquery,不然加载上一个js的时候jquery还没有加载 <script src="js/jquery-1.9.1.js" type="text/javas ...