【SSM 2】spring常用注解
声明:以下观点,纯依据个人目前的经验和理解,有不当之处,多指教!
一、基本概述
注解(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常用注解的更多相关文章
- Spring系列之Spring常用注解总结
传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件 ...
- Spring常用注解介绍【经典总结】
Spring的一个核心功能是IOC,就是将Bean初始化加载到容器中,Bean是如何加载到容器的,可以使用Spring注解方式或者Spring XML配置方式. Spring注解方式减少了配置文件内容 ...
- Spring常用注解总结
转载自:https://www.cnblogs.com/xiaoxi/p/5935009.html 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点 ...
- Spring注解 系列之Spring常用注解总结
参考:Spring系列之Spring常用注解总结 (1) Resource 默认是byName的方式进行bean配置,@AutoWired默认是按照byType的方式进行装配bean的:(2)Comp ...
- Spring系列之Spring常用注解总结 转载
Spring系列之Spring常用注解总结 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.x ...
- spring常用注解笔记
spring常用注解解释: 1. Mybatis的映射文件xxxMapper.xml中resultMap标签的作用 resultMap标签是为了映射select查询出来结果的集合,其主要 作用是将实体 ...
- SpringBoot+Spring常用注解总结
为什么要写这篇文章? 最近看到网上有一篇关于 SpringBoot 常用注解的文章被转载的比较多,我看了文章内容之后属实觉得质量有点低,并且有点会误导没有太多实际使用经验的人(这些人又占据了大多数). ...
- Spring常用注解汇总
本文汇总了Spring的常用注解,以方便大家查询和使用,具体如下: 使用注解之前要开启自动扫描功能 其中base-package为需要扫描的包(含子包). <context:component- ...
- Spring常用注解,自动扫描装配Bean
1 引入context命名空间(在Spring的配置文件中),配置文件如下: xmlns:context="http://www.springframework.org/schema/con ...
随机推荐
- 数据库学习(-)--sqlserver数据类型
第一大类:整数数据 bit:bit数据类型代表0,1或NULL,就是表示true,false.占用1byte.int:以4个字节来存储正负数.可存储范围为:-2^31至2^31-1.smallint: ...
- Linq二 LinqToSql
虽然微软已经停止更新了LinqToSql,但是目前的已完全满足目前的需求. 第一步:添加LinqToSql 第二步:将其关联的Sqlserver数据库 第三步:数据库已变成实体类 第四步:可以对数据库 ...
- C# winform中的datagridview控件标头加入checkbox,实现全选功能。
/// <summary> /// 给DataGridView添加全选 /// </summary> public class AddCheckBoxToDataGridVie ...
- webdriver如何定位多层iframe中元素
在 web 应用中经常会出现 iframe 嵌套的应用,假设页面上有 A.B 两个 iframe,其中 B 在 A 内,那么定位 B 中的内容则需要先到 A,然后再到 B. iframe 中实际上是嵌 ...
- pasa的安装
介绍: http://pasapipeline.github.io/ 参考别人的安装教程:http://sihua.us/pasa.htm 软件下载: https://github.com/PASAp ...
- VS 2013 打包程序教程
简述 如果你只是想要在他人的机子上运行你的程序而不想安装,有一种简单的方法,只要使用本教程的“步骤—3.生成Release 文件夹”即可.但是有一点需要注意,如果你在程序中调用了其他的dll,那么你需 ...
- 机器学习(一) 从一个R语言案例学线性回归
写在前面的话 按照正常的顺序,本文应该先讲一些线性回归的基本概念,比如什么叫线性回归,线性回规的常用解法等.但既然本文名为<从一个R语言案例学会线性回归>,那就更重视如何使用R语言去解决线 ...
- Android使用echarts框架的K线图
百度echarts框架还是比较强大的,之前有尝试使用它,但毕竟主要使用于web网页端,效果不是很好,所以最终还是取消使用echarts 但之前在使用的过程中遇到些问题,虽然解决很简单,但也花了我不少时 ...
- VISIBLE、INVISIBLE、GONE的区别
VISIBLE:设置控件可见 INVISIBLE:设置控件不可见 GONE:设置控件隐藏 而INVISIBLE和GONE的主要区别是:当控件visibility属性为INVISIBLE时,界面保留了v ...
- oracle之压缩表
oracle压缩数据的处理基于数据库块,本质是通过消除在数据库中的重复数据来实现空间节约. 具体做法: 比较数据块中包含的所有字段或记录,其中重复的数据只在位于数据块开始部分的记号表(Symbol T ...