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之注解(一)概述的更多相关文章

  1. Spring基于注解的配置概述

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/annotation-based-configuration.html: 从Spring 2.5开始 ...

  2. 【SSM 2】spring常用注解

    声明:以下观点,纯依据个人目前的经验和理解,有不当之处,多指教! 一.基本概述 注解(Annotation):也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举 ...

  3. 关于spring事务注解实战

    1.概述 spring的事务注解@Transaction 相信很多人都用过,而@Transaction 默认配置适合80%的配置. 本篇文章不是对spring注解事务做详细介绍,而是解决一些实际场景下 ...

  4. Spring的注解问题

    Annotation(注解)概述 从JDK5.0开始, Java增加了对元数据(MetaData)的支持,也就是 Annotation(注解). Annotation其实就是代码里的特殊标记,它用于替 ...

  5. Spring - Spring 常用注解

    概述 简单整理一些 Spring 的注解 这个算是一个 水一波 类型的整理 内容不全 分类可能有的地方不会太符合逻辑 而且时间也不太充裕 先把自己想写的写下来, 然后随缘整理吧 约定 版本 Sprin ...

  6. Spring MVC注解的一些案列

    1.  spring MVC-annotation(注解)的配置文件ApplicationContext.xml <?xml version="1.0" encoding=& ...

  7. Spring系列之Spring常用注解总结

    传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件 ...

  8. spring @condition 注解

    spring @condition注解是用来在不同条件下注入不同实现的 demo如下: package com.foreveross.service.weixin.test.condition; im ...

  9. spring mvc(注解)上传文件的简单例子

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...

随机推荐

  1. ecshop数据库说明

    数据库 ecshop 表的结构 ecs_account_log 字段 类型 空 默认 含义 log_id mediumint(8) 否 账户记录表 user_id mediumint(8) 否 用户编 ...

  2. java Collection接口

    Collection 1——————Set子接口:无序,不允许重复. 2——————List子接口:有序,允许重复. Set和List对比: 1.set:检索元素的效率比较低,删除和插入效率比较高,删 ...

  3. Springboot+hibernate简单的增删改查

    1.创建好项目之后在配置端口号(也可以不用配置,默认端口8080) #server server.port= server.tomcat.uri-encoding=utf- 2.配置mysql #My ...

  4. jquery中的left和top

    left 和 top /*1. 获取元素基于定位容器的位置*/ /*返回的是对象 属性 left top */ var position = $('.inner').position(); conso ...

  5. os的进程调度算法(抄袭的)

    package me.letterwish.test; import java.io.BufferedInputStream; import java.io.FileInputStream; impo ...

  6. CNN结构:用于检测的CNN结构进化-分离式方法

    前言: 原文链接:基于CNN的目标检测发展过程       文章有大量修改,如有不适,请移步原文. 参考文章:图像的全局特征--用于目标检测 目标的检测和定位中一个很困难的问题是,如何从数以万计的候选 ...

  7. ROS:ubuntuKylin17.04-Ros使用OrbSLAM2

    忙于图像处理和DCNN,很长时间不使用ROS,重新安装系统后,再次使用ORB-SLAM2(ROS)进行三维重建和实时追踪的演示. 参考以前的文章:ROS:ubuntu-Ros使用OrbSLAM ORB ...

  8. react基础篇二

    组件 & Props & 生命周期 组件可以将UI切分成一些独立的.可复用的部件,这样你就只需专注于构建每一个单独的部件. 组件从概念上看就像是函数,它可以接收任意的输入值(称之为“p ...

  9. kvm介绍、安装及创建虚拟机

    kvm虚拟化介绍 一.虚拟化分类 1.虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机.在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立 ...

  10. 八进制、十进制、操作符(day04)

    把二进制表示的数字从右向左每三个数位分成 一组,每组用一个0到7之间的数字替换. 这个替换结果叫做数字的八进制表示方式 (八进制) 可以直接在程序里用八进制方式表示数字, 这种数字必须以0做开头 可以 ...