有关spring注解总结
前言
- 目前企业开发多采用纯注解的方式开发,注解开发的好处:简洁,可读性强
- 最近学习了spring全家桶,总结了有关spring的常用注解,写的不对的地方,欢迎指正
Spring模块注解
@Configuration:等同于<beans></beans>
@Bean:等同于<bean></bean>
@Value:获取值,等同于property
@PropertySource: 用于引入外部属性配置
构造型注解:@Component @Controller @Service @Repository
@Component:标注一个普通的Bean类
@Repository:标注一个DAO组件类
@Service:标注一个业务逻辑组件类
@Controller:标注一个控制器组件类
@ComponentScan 包扫描(读取扫描包中使用构造型注解的类)
@Autowired:可用于为类的属性、构造器、方法进行注值
@Resource:不属于spring的注解,使用该annotation为目标bean指定协作者Bean
@Autowired + @Qualifier = @Resource //@Autowired只按照Type注入;@Resource默认按Name自动注入,也提供按照Type注入
@PostConstruct 和 @PreDestroy 实现初始化和销毁bean之前进行的操作
AOP模块注解
@Aspect:声明表示这是一个切面类
@Pointcut:指定一个切点,定义需要拦截的东西
@Pointcut("execution(* co.chniny.controller..*.*(..))") //拦截指定包下的方法
第一个 * 号表示返回值类型,* 表示所有类型
包名:表示需要拦截的包名,后面的两个点表示当前包和当前包的所有子包
第二个 * 号表示类名,* 表示所有类
*(..) 这个星号表示方法名,* 表示所有的方法,后面括弧里面表示方法的参数,两个句点表示任何参数
@Pointcut("@annotation(org.springframework.web.bind.annotation.PostMapping)") //切入注解是 @PostMapping 的所有方法
@Around:用于修饰Around增强处理,@Around可以自由选择增强动作与目标方法的执行顺序,也就是说可以在增强动作前后,甚至过程中执行目标方法;@Around可以改变执行目标方法的参数值,也可以改变执行目标方法之后的返回值
@Before:在切面切入目标方法之前执行
@After:指定的方法在切面切入目标方法之后执行,也可以做一些完成某方法之后的 Log 处理
@AfterReturning:可以用来捕获切入方法执行完之后的返回值,对返回值进行业务逻辑上的增强处理
@AfterThrowing:当被切方法执行过程中抛出异常时,会进入 @AfterThrowing 注解的方法中执行,在该方法中可以做一些异常的处理逻辑
@EnableAspectJAutoProxy:开启AOP
@EnableCaching:开启spring缓存
SpringMVC模块注解
@Controller:标识这是一个控制器
@RequestMapping:路径映射;可用于类和方法,作用于类:表示给当前类同一的路径,作用于方法:映射到具体的路径
name:mapping名
value:path路径
path:等同于value
method:请求的方法类型
params:只有含有指定参数的请求才会处理
headers:请求头
consumes:处理的参数类型
produces:指定请求类型和返回值类型
@RequestMapping("xxx/{name}")为当前格式时,获取name的值需要配合@PathVariable
@GetMapping:用于处理请求方法的GET类型
@PostMapping:用于处理请求方法的POST类型等
@PutMapping:用于处理请求时更新操作
@DeleteMapping:用于处理请求是删除操作
@PatchMapping:是对put方式的一种补充;put方式可以更新,但更新的是整体,patch是对局部更新
@ModelAttribute:表示该Controller的所有方法在调用前,先执行此@ModelAttribute标注的方法
@SessionAttributes:应用到Controller上面,可以将Model中的属性同步到session当中
@RequestParam:接受get请求的参数,类似request.getParameter("name")
@RequestBody:指方法参数被绑定到HTTP请求Body
@ResponseBody:返回渲染为json
@CrossOrigin:解决跨域请求问题,标注在方法和类
@EnableTransactionManagement:开启事务管理,在spring配置文件中配置
@Transactional:springmvc事务注解,若标注在业务层,表示业务层事务管理,如果出现异常,则回滚,确保数据的正确
@EnableWebMvc:开启SpringMVC注解,在springmvc配置文件中配置
Mybatis模块注解
SQL语句映射:
@Insert:实现新增功能
@Select:实现查询功能
@SelectKey:插入数据后,获取自增id的值
@Update:实现更新功能
@Delete:实现删除功能
结果集映射:
@Results:各个属性的含义,id为当前结果集声明唯一标识,value值为结果集映射关系
@Result:代表一个字段的映射关系,column指定数据库字段的名称,property指定实体类属性的名称,jdbcType数据库字段类型
@ResultMap来引用映射结果集,其中value可省略
关系映射:
@one:用于一对一关系映射
@many:用于一对多关系映射
@MapperScan(basePackages = {"co.chniny.mapper"}) //扫描MyBatis提供的注解(@Mpapper)所在的包
@SelectProvider(type = BaseProvider.class, method = "getAll") //处理复杂sql语句的构建器
@Mapper //标注这是一个mapper
Spring Boot模块注解
@EnableAutoConfiguration:启用SpringBoot的自动配置机制
@SpringBootApplication:申明让spring boot自动给程序进行必要的配置,@SpringBootApplication = @Configuration + @EnableAutoConfiguration + @ComponentScan
@RestController:用于标注控制层组件,等同于 @ResponseBody + @Controller
@Repository:标注一个DAO组件类
@Import: 用来导入其他配置类
@ImportResource: 用来加载xml配置文件
@Scope:注解在类上,描述spring容器如何创建Bean实例
singleton: 表示在spring容器中的单例,通过spring容器获得该bean时总是返回唯一的实例
prototype:表示每次获得bean都会生成一个新的对象
//项目导入依赖lombok
@Data : 注解在类上, 为类提供读写属性, 此外还提供了 equals()、hashCode()、toString() 方法
@Getter/@Setter : 注解在类上, 为类提供读写属性
@ToString : 注解在类上, 为类提供 toString() 方法
@Slf4j : 注解在类上, 为类提供一个属性名为 log 的 log4j 的日志对象
@Log4j : 注解在类上, 为类提供一个属性名为 log 的 log4j 的日志对象
补充
标准注解:
@SuppressWarnings //忽略警告
@Override //标注为是一个重写方法
@Deprecated //废弃
自定义注解:
语法:访问修饰符 @interface 注解名
元注解:通常标注在自定义注解上
@Target: 表示该注解可用于什么地方;参数包括:
CONSTRUCTOR:构造器的声明
FIELD:域声明(包括enum实例)
LOCAL_VARIBALE:局部变量声明
METHOD:方法声明
PACKAGE:包声明
PARAMETER:参数声明
TYPE:类、接口(包含注解类型)、enum声明
@Retention:表示需要在什么级别保存该注解信息;参数包含:
SOURCE:注解将被编译器丢弃
CLASS:注解在class文件中可用
RUNTIME:JVM将在运行期也保留注解,因此可以通过反射机制读取注解信息
@Documented: 将此注解包含在Javadoc中
@Inherited:运行子类继承父类中的注解
@Native: 表示定义常量值的字段可以从本地代码引用
有关spring注解总结的更多相关文章
- spring注解源码分析--how does autowired works?
1. 背景 注解可以减少代码的开发量,spring提供了丰富的注解功能.我们可能会被问到,spring的注解到底是什么触发的呢?今天以spring最常使用的一个注解autowired来跟踪代码,进行d ...
- Spring注解
AccountController .java Java代码 1. /** 2. * 2010-1-23 3. */ 4. packag ...
- spring 注解的优点缺点
注解与XML配置的区别 注解:是一种分散式的元数据,与源代码耦合. xml :是一种集中式的元数据,与源代码解耦. 因此注解和XML的选择上可以从两个角度来看:分散还是集中,源代码耦合/解耦. 注解的 ...
- spring注解说明之Spring2.5 注解介绍(3.0通用)
spring注解说明之Spring2.5 注解介绍(3.0通用) 注册注解处理器 方式一:bean <bean class="org.springframework.beans.fac ...
- 使用Spring注解来简化ssh框架的代码编写
目的:主要是通过使用Spring注解的方式来简化ssh框架的代码编写. 首先:我们浏览一下原始的applicationContext.xml文件中的部分配置. <bean id="m ...
- spring注解scheduled实现定时任务
只想说,spring注解scheduled实现定时任务使用真的非常简单. 一.配置spring.xml文件 1.在beans加入xmlns:task="http://www.springfr ...
- [转]Spring 注解总结
原文地址:http://blog.csdn.net/wangshfa/article/details/9712379 一 注解优点?注解解决了什么问题,为什么要使用注解? 二 注解的来龙去脉(历史) ...
- eclipes的Spring注解SequenceGenerator(name="sequenceGenerator")报错的解决方式
eclipes的Spring注解SequenceGenerator(name="sequenceGenerator")报错的解决方式 右键项目打开Properties—>JA ...
- Spring注解【非单例】
花了至少一整天的时间解决了这个问题,必须记录这个纠结的过程,问题不可怕,思路很绕弯. 为了能说清楚自己的问题,我都用例子来模拟. 我有一个类MyThread是这样的: @Service public ...
- spring注解方式在一个普通的java类里面注入dao
spring注解方式在一个普通的java类里面注入dao @Repositorypublic class BaseDaoImpl implements BaseDao {这是我的dao如果在servi ...
随机推荐
- 微信小程序云开发-数据库-商品列表数据显示N条数据
一.wxml文件 在wxml文件中,写页面和点击事件,添加绑定事件limitGoods 二.js文件 在js文件中写limitGoods(),使用.limit(3)表示只显示3条数据
- 《Node+MongoDB+React 项目实战开发》已出版
前言 从深圳回长沙已经快4个月了,除了把车开熟练了外,并没有什么值得一提的,长沙这边要么就是连续下一个月雨,要么就是连续一个月高温暴晒,上班更是没啥子意思,长沙这边的公司和深圳落差挺大的,薪资也是断崖 ...
- Python -- 使用模块中的函数
在确定自己不会导入多个同名函数(从不同模块导入)的情况下,你可能不希望在每次调用函数的时候,都要写上模块的名字.那么,可以使用import命令的另外一种形式: >>> from ma ...
- Drupal Drupalgeddon 2 远程代码执行漏洞(CVE-2018-7600)
影响版本 Drupal 6.x,7.x,8.x Drupal 是一款用量庞大的CMS,其6/7/8版本的Form API中存在一处远程代码执行漏洞 脚本检测
- C++ //拷贝构造函数调用时机//1.使用一个已经创建完毕的对象来初始化一个新对象 //2.值传递的方式给函数参数传值 //3.值方式返回局部对象
1 //拷贝构造函数调用时机 2 3 4 #include <iostream> 5 using namespace std; 6 7 //1.使用一个已经创建完毕的对象来初始化一个新对象 ...
- Windows API 进程相关笔记
0. 前言 最近做了一个进程信息相关的项目,整理了一下自己做项目时的笔记,分享给大家 1. 相关概念 1.1 HANDLE 概念 HANDLE(句柄)是Windows操作系统中的一个概念. 在Wind ...
- Special Forms and Syntax Sugars in Clojure
(...): function literals, p40, 64; '(...): suppress evaluation, p24; _(...): comments, p18; ".. ...
- MyBatis学习05(多对一和一对多)
8.多对一的处理 多对一的理解: 多个学生对应一个老师 如果对于学生这边,就是一个多对一的现象,即从学生这边关联一个老师! 数据库设计 CREATE TABLE `teacher` ( `id` IN ...
- Linux统计文本中某个字符串出现的次数
常用的有如下两种方式: 1.VIM 用vim打开文件,然后输入: :%s/hello//gn 如下图: 图中的例子就是统计文本中"hello"字符串出现的次数 说明: %s/pat ...
- canvas也能实现事件系统????
前言 大家好! 我是热爱图形的fly, 之前在群里和粉丝讨论canvas 如何事件系统, 然后呢? 我自己其实也对这个比较感兴趣, 我看过很多canvas 实现的项目, 比如canvas 实现思维导图 ...