spring的所有注解+

 
 
@Component //放入IOC容器     @Controller    @Service     @Repository
@SpringJUnitConfig(value = JavaConfig.class)//指明 配置类,(location = "classpath:spring.xml")也可以指明配置文件
@Test  //测试的时候加上 就可以运行
@Autowired //引入IOC容器的对象 
@Resource //相比Autowired更不易报错,建议用
@Qualifier(value = "beanId") 
//根据 @Qualifier 注解中指定的名称作为 bean id进行匹配
@Configuration //表明是 配置类

@ComponentScan(basePackages = "com.atguigu")//扫描包下的注解
@PropertySource(value = "classpath:jdbc.properties")//引入外部配置文件
@Value("${atguigu.url}")//指明声明变量的值为 配置文件的atguigu.url的值
@Bean //会真正让配置类的方法创建的组件存储到IOC容器
@Scope(scopeName = ConfigurableBeanFactory.SCOPE_SINGLETON) 
   //作用域,默认单例模式
@Import(value = {JavaConfigurationB.class})//整合配置类


@EnableAspectJAutoProxy // 开启AspectJ的注解 <aop:aspectj-autoproxy />

@Aspect        //加上切面才生效

@Order(10)//指定一个优先级的值,值越小,优先级越高!越高的前置先执行,后置后执行
@EnableTransactionManagement // 开启 事务 注解的支持
@Transactional // 添加事务,可放在类或者方法上,表明 类或者方法下有事务
 

*   description:增强类的内部要存储的增强代码
*
*   1.
定义方法存储增强代码
*      具体定义几个方法, 根据插入的位置决定!
*   2.使用注解配置  指定插入目标方法的位置
*      前置  @Before
*     
后置  @AfterReturning
*     
异常  @AfterThrowing
*     
最后  @After
*     
环绕  @Around
*
*      try{
*         
前置
*          目标代码执行
*          后置
*      }catch(){
*         
异常
*      }finally{
*         
最后
*      }
*
*   3.
配置切点表达式[选择插入的方法  切点]
*   4.
补全注解
*      加入ioc容器 @Component
*     
配置切面 @Aspect = 切点 + 增强
*
*      spring aop
重点是 配置 -> jdk | cglib
*
*   5.
开启aspect注解的支持
*
*/

 

@EnableAspectJAutoProxy // 开启aspectj的注解 <aop:aspectj-autoproxy />

 
@Pointcut("execution(* com.atguigu.service.impl.*.*(..))") 
public void pc(){}// 切点表达式的提取

@Before("com.atguigu.pointcut.MyPointCut.myAdvicePc()")

@AfterReturning(value = "com.atguigu.pointcut.MyPointCut.myAdvicePc()",returning = "result")

@After("com.atguigu.pointcut.MyPointCut.myAdvicePc()")

@AfterThrowing(value = "com.atguigu.pointcut.MyPointCut.myAdvicePc()",throwing = "throwable")

@Around("com.atguigu.pointcut.MyPointCut.pc()")

TODO: 增强方法中获取目标方法信息
*      1. 全部增强方法中,获取目标方法的信息(方法名,参数,访问修饰符,所属的类的信息...)
*      (JoinPoint joinPoint) import org.aspectj.lang.JoinPoint;
*      joinPoint 包含目标方法的信息
*      2. 返回的结果 - @AfterThrowing
*      (Object result) result接收返回结果
*      @AfterReturning(value = "execution(* com..impl.*.*(..))",returning = "形参名")
*      3,异常的信息 - @AfterThrowing
*      (Throwable throwable) throwable接收异常信息
*      @AfterThrowing(value = "execution(* com..impl.*.*(..))",throwing = "形参名")
*

@Param //这个注解 可以指定多个简单参数的key  key = @Param("value值"),key就是名称,不然在mapper文件中取不到


例如:

List<Employee> queryByNameAndSalary(@Param("a") String name, @Param("b") Double salary);


@Data //加上lombok插件和注解 就可以用,作用是为类加上set、get、toString等等方法

@BeforeEach // junit会在每一个@Test方法前执行@BeforeEach方法

@AfterEach // junit会在每一个@Test方法后执行@AfterEach方法

 

@EnableWebMvc // 相当于给 handlerAdapter配置了json转化器

自动 添加秘书handlerMapping 添加经理handlerAdapter 给经理添加Jacksonjson处理器

@WebServlet("必须使用 / 开头")
@RequestMapping(不必须使用 / 开头)

* 1. 精准地址【 一个 | 多个 】 /user/login {"地址1","地址2"}
* 2. 支持模糊 * 任意一层字符串 | ** 任意一层或多层字符串
* 3. 类上和方法上添加@RequestMapping的区别
*              类上提取通用的访问地址
*              方法上是具体的handler地址
*              访问: 类地址 + 方法地址
* 4. 请求方式指定
*     客户端 -> http(get | post | put | delete) -> ds -> handler
*     默认情况下:@RequestMapping ("login") 只要地址正确 ,任何请求方式都可以访问
*      指定请求方式:method = {RequestMethod.GET,RequestMethod.POST}
*      不符合请求方式: 会出现 405 异常!!!

5.注解进阶  (这些只能使用在方法上)
@GetMapping("xxx") == @RequestMapping(value = "xxx",method = RequestMethod.GET)
@PostMapping("xxx") == @RequestMapping (value = "xxx",method = RequestMethod.POST)
@PutMapping("xxx") ==  @RequestMapping (value = "xxx",method = RequestMethod.PUT)
@DeleteMapping("xxx")==@RequestMapping(value="xxx",method=RequestMethod.DELEE)

……

@PathVariable

接收路径参数注解 (接收路径参数时 必须使用的)

@RequestParam

用于访问 Servlet 请求参数,包括多部分文件。参数值将转换为声明的方法参数类型。

@RequestHeader

用于访问请求标头。标头值将转换为声明的方法参数类型。

@CookieValue

用于访问Cookie。Cookie 值将转换为声明的方法参数类型。

@RequestBody

用于访问 HTTP 请求正文。正文内容通过使用 HttpMessageConverter 实现转换为声明的方法参数类型。可以单独用

是针对请求体的(接请求体中的json数据必须要用RequestBody注解)

@ResponseBody是针对响应体的

@RestController //   @RestController = @ResponseBody + @Controller

//@ControllerAdvice和@RestControllerAdvice 代表 全局异常发生,会走此类写的handler

@ControllerAdvice  //可以返回逻辑视图 转发和重定向
@RestControllerAdvice // = @ControllerAdvice + @ResponseBody ,直接返回json字符串

@ExceptionHandler(Exception.class)// 如果发生异常 -> ControllerAdvice 注解的类中 -> 根据@ExceptionHandler(指定的异常)比如(ArithmeticException.class) -> 找handler方法
//指定异常 可以精准查找,没有精准匹配的会查父异常

@Validated // 放参数前 让 SpringMVC 在完成数据绑定后执行数据校验的工作。

@Null

标注值必须为 null

@NotNull

标注值不可为 null

@AssertTrue

标注值必须为 true

@AssertFalse

标注值必须为 false

@Min(value)

标注值必须大于或等于 value

@Max(value)

标注值必须小于或等于 value

@DecimalMin(value)

标注值必须大于或等于 value

@DecimalMax(value)

标注值必须小于或等于 value

@Size(max,min)

标注值大小必须在 max 和 min 限定的范围内

@Digits(integer,fratction)

标注值值必须是一个数字,且必须在可接受的范围内

@Past

标注值只能用于日期型,且必须是过去的日期

@Future

标注值只能用于日期型,且必须是将来的日期

@Pattern(value)

标注值必须符合指定的正则表达式

扩展:

@Email

标注值必须是格式正确的 Email 地址

@Length

标注值字符串大小必须在指定的范围内

@NotEmpty

标注值字符串不能是空字符串

@Range

标注值必须在指定的范围内

       易混淆:

@NotBlank 字符串,不为null,不为 " " 字符串)

@NotEmpty (集合类型长度大于0)

@NotNull标准值不可为null)

@CrossOrigin  //允许其他源访问我们的controller浏览器大哥就不拦截了

前后端分离必须加这个注解,不然前端网址跳转访问时会触发浏览器安全机制(同源策略)

(同源策略:比较访问方 和 被访问方的 协议、ip、端口 三个,任何一个不相等都找不到)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值