声明:以下观点,纯依据个人目前的经验和理解,有不当之处,多指教!

一、基本概述

注解(Annotation):也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

首先,根据用途划分,可以简单的分为元注解和一般注解,其中元注解包括四个大类:1.@Target,2.@Retention,3.@Documented,4.@Inherited。这几个注解是用来解释其他一般注解的。那么一般注解,就是我们常用的注解。比如:spring注解@controller等

其次,根据范围划分(从大到小),我则把注解分为4类:1,J2EE注解;2,EJB注解;3,spring注解; 4,用户自定义注解。其中EJB和spring的划分,我则是根据查到资料所显示的各自可使用的范围,据说(本人无力考证),EJB为所有主要的J2EE支持!

二、具体注解应用

再次强调说明,本文所列的几个注解,并不是以好坏区分,而是自己最近常用的,但是在概念上有所模糊的!

1,spring的分层注解

@Controller 控制层 @Service 服务层 @Repository 持久层 @Component泛指组件,当组件不好归类的时候,可以使用这个注解进行标注(我一般用这个注解工具类,一般!有时也单独抽象出一个子工程负责整个工程的公共类部分)

使用Controller注解,则对应到之前的配置文件生成:

<bean id="" class="" />

2,对象注解

@Autowired:采用类型的方式完成自动装配

@Resource:采用名称+类型的方式完成自动装配(比较保险)

区别是什么呢?先看下面的注入:

<pre name="code" class="java"><span style="font-family:KaiTi_GB2312;font-size:18px;"><bean id="userDao" class="cn.itcast.shop.user.dao.UserDao">
<property name="sessionFactory" ref="sessionFactory"/>
</bean></span>

在这句代码里面,我们通过id=userDao注入了一个UserDao类,当我们在用的时候,我们通常写:

<span style="font-family:KaiTi_GB2312;font-size:18px;">private UserDao userDao;  

    public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}</span>

不知道大家有没有发现,我们每次写的private UserDao userDao后面的实例名称,总是和我们在配置文件注入的时候是一样的(至少我有时候因为名称不对应,结果报错了)。采用类型和名称的区别就在于:当采用名称进行装配的时候,在你用到这个实例的时候,所使用的名称一定要相同。在注解上面则表示为:@Service(value="userService"),那么在使用这个Service的时候,则必须和这个名称对应。它会去容器里面找userService这个名称,然后找到这个名称所对应的类,如果没有,则属性值为null。但是,如果是采用类型装配的话,它找的就是cn.itcast.shop.user.dao.UserDao这个类。

3,@ResponseBody

spring还有很多注解,但我都不想说了。最后再说一个@ResponseBody注解(应用于controller)。这个注解是什么呢,就是当你引入了Jackson这个jar包的时候,再使用这个注解,SpringMVC就可以自动将它所修饰的方法的返回值转换为json格式,从而不需要人为的去转换!

PS:传说中,这个注解加上那个jar包,可以完美的将所有Java对象转换为json格式!

4,其他

EJB注解:说实在的,这个注解我比较少用,用到的几次,就是使用注解,进行EJB远程调用,不是很清楚,只是当时查的时候才知道@EJB这个东西不属于spring的注解,我以为是。不太理解,不瞎说!

J2EE注解:如2中所示的,@Resource则属于J2EE注解,而@Autowired则是spring提供的注解!

三、总结

事实上,我还是不太清楚,这每一种注解到底它的应用场景是什么。有时候挺迷惑的,但是,我一直在路上,总会明白的。好了,到了复制粘贴的时候了(这回粘自家人的言论),为什么使用注解呢?注解可以使我们的代码看起来更简洁,而且在一定程度上解除了类原有特性和扩展特性之间的耦合。

【SSM 2】spring常用注解的更多相关文章

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

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

  2. Spring常用注解介绍【经典总结】

    Spring的一个核心功能是IOC,就是将Bean初始化加载到容器中,Bean是如何加载到容器的,可以使用Spring注解方式或者Spring XML配置方式. Spring注解方式减少了配置文件内容 ...

  3. Spring常用注解总结

    转载自:https://www.cnblogs.com/xiaoxi/p/5935009.html 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点 ...

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

    参考:Spring系列之Spring常用注解总结 (1) Resource 默认是byName的方式进行bean配置,@AutoWired默认是按照byType的方式进行装配bean的:(2)Comp ...

  5. Spring系列之Spring常用注解总结 转载

    Spring系列之Spring常用注解总结   传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.x ...

  6. spring常用注解笔记

    spring常用注解解释: 1. Mybatis的映射文件xxxMapper.xml中resultMap标签的作用 resultMap标签是为了映射select查询出来结果的集合,其主要 作用是将实体 ...

  7. SpringBoot+Spring常用注解总结

    为什么要写这篇文章? 最近看到网上有一篇关于 SpringBoot 常用注解的文章被转载的比较多,我看了文章内容之后属实觉得质量有点低,并且有点会误导没有太多实际使用经验的人(这些人又占据了大多数). ...

  8. Spring常用注解汇总

    本文汇总了Spring的常用注解,以方便大家查询和使用,具体如下: 使用注解之前要开启自动扫描功能 其中base-package为需要扫描的包(含子包). <context:component- ...

  9. Spring常用注解,自动扫描装配Bean

    1 引入context命名空间(在Spring的配置文件中),配置文件如下: xmlns:context="http://www.springframework.org/schema/con ...

随机推荐

  1. Python的平凡之路(11)

    一. rabbitmq 1 进程Queue:  父进程与子进程进行交互,或者同属于同一父进程下多个子进程进行交互 2 队列通信:   send1.py #!/usr/bin/env python#Au ...

  2. day11 堡垒机

    项目实战:运维堡垒机开发 前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功能只是堡垒 ...

  3. 如何解决xx列不在表中

    在连接数据库的程序中常会出现xx列不在表中的问题?那么应该怎么解决呢? 产生此问题的原因有三种: 1.数据表没这个字段2.sql查询没将这个字段查出来3.字段名写错了 还有重要的是一定要检查你的数据库 ...

  4. Fragment开发计划

    Fragment是什么 Fragment正如字面意思所言是碎片,所以这是一个管理碎片时间的应用程序.目前考虑的是先在Android上实现,如果IOS的合作伙伴靠谱可以交给他做,如果不靠谱就等Andro ...

  5. Maven工程中的右键team

    与资源库同步(S):在需要合并版本时使用 提交(C):本地代码写入源码库 更新(U):本地代码升级到服务器端版本 在点击更新时,请注意: 如果当前项目有改动(甚至是比原来多了一个空格),则此时无法更新 ...

  6. Unity3D DllNotFoundException/System.DllNotFoundException

    Unity System.DllNotFoundException Unity Fallback handler could not load library D:/91yGame/SparrowCD ...

  7. 转:Task任务调度实现生产者消费者模式

    我们经常会遇到生产者消费者模式,比如前端各种UI操作事件触发后台逻辑等.在这种典型的应用场景中,我们可能会有4个业务处理逻辑(下文以P代表生产者,C代表消费者): 1. FIFO(先进先出)      ...

  8. LVM逻辑卷管理

    一.LVM简介 LVM(Logic Volume Manager)逻辑卷管理,简单理解就是将一块或多块硬盘的分区在逻辑上集合,当一块大硬盘来使用. 其特点是: 1.可以实现在线动态扩展,也可以缩减 2 ...

  9. 一些上流的CSS3图片样式

    直接在图片元素上直接应用CSS3 inset box-shadow 或 border-radius时,浏览器并不能完美的渲染它们.不过,如果把这个图片用作背景图,你就可以可以给它添加任何样式了,浏览器 ...

  10. ps磨皮

    光滑磨皮步骤: 1.用高斯模糊滤镜模糊皮肤,用蒙版控制范围,去掉较为明显的杂色及瑕疵.可以高斯模糊重复多次,去掉明显的杂色. 2.用涂抹工具处理细小的瑕疵及加强五官等部位的轮廓: 3.整体美白及润色 ...