----.@ControllerAdvice:
可以将对于控制器的全局配置放在同一个位置上,将作用在所有注解了@RequestMapping的控制器的方法上
----.@Slf4j 日志输出
----.@ExceptionHundler:
用于全局处理控制器里的异常
----.@RestController注解相当于@Controller + @ResponseBody 合在一起的作用。
----.@RequestMapping是一个用来处理请求地址映射的注解,
可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
----.@Autowired 注释,
它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。
----.@PostMapping 映射一个POST请求
{Spring MVC新特性
提供了对Restful风格的支持
@GetMapping,处理get请求
@PostMapping,处理post请求
@PutMapping,处理put请求
@DeleteMapping,处理delete请求}
在@RequestMapping注解中定义URL变量规则
在@RequestMapping注解方法中获取URL变量-@PathVariable
@PathVariable指定URL变量名
@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);
GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交
。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。
----.@PatchMapping Patch方式是对put方式的一种补充;cfhdojbkjhnklbpkdaibdccddilifddb-3.2-Crx4Chrome.com.crk
put方式是可以更新.但是更新的是整体.patch是对局部更新;
----.@SpringBootApplication springBoot 的核心启动注解
----.@Date 以往我的做法,
还会通过快捷方法生成Getter,Setter,equals,hashCode,toString方法。
但这个类里只声明了变量,没有各种方法,而在类名上加@Data注解,导入依赖:lombok.Data。
在另一个类中导入该入参类后,通过activityListParam.是可以点出没有写的Get,Set等方法。
因此,我理解为:@Data注解在类上时,简化java代码编写,为该类提供读写属性,还提供了equals(),hashCode(),toString()方法
---------------------
----.@ToString 代替实体类中的头tostring方法
----.@Accessors
Accessor的中文含义是存取器,@Accessors用于配置getter和setter方法的生成结果,下面介绍三个属性
fluent
fluent的中文含义是流畅的,设置为true,则getter和setter方法的方法名都是基础属性名,且setter方法返回当前对象。
chain
chain的中文含义是链式的,设置为true,则setter方法返回当前对象。如下
prefix
prefix的中文含义是前缀,用于生成getter和setter方法的字段名会忽视指定前缀(遵守驼峰命名)。如下
注解方面:
@Component
a.不指定bean的名称,默认为类名首字母小写university
@Component
public class University {
to do sthing...
}
b.指定bean的名称
@Component("university1")
public class University {
to do sthing...
}
用在了datacollect 包内
@Value https://blog.csdn.net/hunan961/article/details/79206291
注入普通字符串
注入操作系统属性
注入表达式结果
注入其他Bean属性:注入beanInject对象的属性another
注入文件资源
注入URL资源
@PostConstruct https://blog.csdn.net/qq_37636695/article/details/84791468
注解说明
使用注解: @PostConstruct
效果:在Bean初始化之后(构造方法和@Autowired之后)执行指定操作。经常用在将构造方法中的动作延迟。
备注:Bean初始化时候的执行顺序: 构造方法 -> @Autowired -> @PostConstruct
JAXB框架框架
@XmlType
该注解用在class类上,常与@XmlRootElement,@XmlAccessorType一起使用。它有三个属性:name、propOrder、namespace,经常使用的只有前两个属性。如:
@XmlRootElement
类级别的注解,对应的是xml文件中的根节点。常与 @XmlType 和 @XmlAccessorType一起使用。如:
@XmlAccessorType
@XmlAccessorType用于指定由java对象生成xml文件时对java对象属性的访问方式。常与@XmlRootElement、@XmlType一起使用。它的属性值是XmlAccessType的4个枚举值,分别为:
XmlAccessType.FIELD:java对象中的所有成员变量;
XmlAccessType.PROPERTY:java对象中所有通过getter/setter方式访问的成员变量;
XmlAccessType.PUBLIC_MEMBER:java对象中所有的public访问权限的成员变量和通过getter/setter方式访问的成员变量;
XmlAccessType.NONE:java对象的所有属性都不映射为xml的元素。
注意:@XmlAccessorType的默认访问级别是XmlAccessType.PUBLIC_MEMBER。因此,如果java对象中的private成员变量设置了public权限的getter/setter方法,就不要在private变量上使用@XmlElement和@XmlAttribute注解,否则在由java对象生成xml时会报同一个属性在java类里存在两次的错误。同理,如果@XmlAccessorType的访问权限为XmlAccessType.NONE,如果在java的成员变量上使用了@XmlElement或@XmlAttribute注解,这些成员变量依然可以映射到xml文件。
@resource
是注入容器提供的资源对象,比如SessionContext MessageDrivenContext。或者你那个name指定的JNDI对象
可以理解为资源->数据源->也就是数据连接,基本上就是告诉程序数据库在哪里
@Resource默认按 byName 自动注入,是J2EE提供的
@Resource有两个中重要的属性:name和type ,而Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用 byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。
@Resource装配顺序
(1). 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常;
(2). 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常;
(3). 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常;
(4). 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;
@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入。
@PersistenceContext
private EntityManager em;
注入的是实体管理器,执行持久化操作的,需要配置文件persistence.xml。
注入一堆保存实体类状态的数据结构,针对实体类的不同状态(四种,managedh或detached等)可以做出不同的反应(merge,persist等等),其实就是把数据从数据库里提出,然后在内存里处理的,再返回数据库的法则。
@SuppressWarnings
主要是取消一些编译器产生的Warning级别的告警 https://blog.csdn.net/qgggodlike/article/details/85290385
@Controller
使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面
若返回json等内容到页面,则需要加@ResponseBody注解
@RequestBody
这里的@RequestBody用于读取Http请求的body部分数据——就是我们的请求数据。比如json或者xml。然后把数据绑定到 controller中方法的参数上,这里就是String json这个入参啦~。
使用时要注意能不能用@RequestBody把request请求的数据解析,并赋给我们定义的参数上是由请求头的Content-Type的值来决定的。
当我们用get/post方式提交请求后, Content-Type的值有以下几种,分别对应能不能解析数据如下:
1.application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理)
2.multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据)
3.其他格式(其他格式包括application/json, application/xml等),这些格式的数据,必须使用@RequestBody来处理
说明:request的body部分的数据编码格式由header部分的Content-Type指定。
@ReponseBody https://blog.csdn.net/Yoga0301/article/details/80640326
用法:放在controller层的方法上,将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
使用时机:
当我们想让页面知道我们返回的数据不是按照html标签的页面来解析,而是其他某种格式的数据解析时(如json、xml等)使用。
例如:
@RequestMapping("/getList")
@ResponseBody
public Map<String,Object> getStudentList(HtppServletRequest request){
Map<String,Object> map=new HashMap<String,Object>();
Dto dto=getParamAsDto(request);
List li=studentAction.getList(dto.get("age"));
map.put("studentInfo",li);
}
当你不加上@ResponseBody,返回到页面的是String类型的数据。加上这个注解,在页面通过data.studentInfo获取到的就是json格式的,可以取这个json内部的属性值直接。
@InitBinder有什么作用
springMVC中bean中定义了Date,double,Integer等类型,表单提交的数据(字符串)无法做转换为实体对象的属性,因此需要@InitBinder做数据类型转换
@ModelAttribute
springmvc的ModelAttribute注解,在controller每个方法执行前被执行 https://blog.csdn.net/he90227/article/details/51538654
@RequestParam
使用@RequestParm用于绑定controller上的参数,可以是多个参数,也可以是一个Map集合,GET,POST均可
@RequestParm中name属性是指定参数名,required属性默认为ture,表示必传。若为false则为非必传。属性有defaultValue默认值选项,若该参数为null时,会将默认值填充到参数上
最后说一下使用@RequestParam的要求
均支持POST,GET请求
只支持Content-Type: 为 application/x-www-form-urlencoded编码的内容。Http协议中,如果不指定Content-Type,则默认传递的参数就是application/x-www-form-urlencoded类型)
@Repository 作用为给bean在容器中命名
MyBatis之@Repository注解
@Repository是Spring框架提供的一种注解,来自如下包
import org.springframework.stereotype.Repository;
一般在SSM开发中编写MyBatis的DAO接口时使用,如下所示
在DAO接口中注解了@Repository之后,在Service层才能利用Spring的容器注入
在这里注意,如果DAO接口上不使用注解的话,是不能在Service中使用@Autowired进行注入的(经过试验之后,
发现是可以不加@Repository注解的),或者使用配置文件的方式。
@PersistenceContext
private EntityManager em;
注入的是实体管理器,执行持久化操作的,需要配置文件persistence.xml。
注入一堆保存实体类状态的数据结构,针对实体类的不同状态(四种,managedh或detached等)可以做出不同的反应(merge,persist等等),其实就是把数据从数据库里提出,然后在内存里处理的,再返回数据库的法则。
@Query
spring boot jpa之流式查询 @Query定义查询方法 https://blog.csdn.net/qq_27886997/article/details/82982936
@Query(value=" 这里就是查询语句")
@Query支持hql和原生sql两种方式,默认是hql ,hql就是语句中用的是实体名字和实体属性,原生sql用的表名字和表字段,
方法名字这里可以自己定义
@Transactional
https://blog.csdn.net/nextyu/article/details/78669997
Transactional的意思是事务性
@Transactional 表示的是Spring 的事务注解。
使用方法
@Transactional(rollbackFor = Exception.class) 当发生异常的情况,回滚
通过查找资料:
https://blog.csdn.net/weixin_41485592/article/details/80877665
这篇文章得出的结论是:
1.@transactional(rollbackfor = exception.class) 不管检查异常还是非检查异常都会回滚。
2.@Transactional直接注解下面写方法,默认为RuntimeException时候回滚(也就是说非RuntimeException会造成不回滚)