zoukankan      html  css  js  c++  java
  • Spring注解开发

    @Annotation注解

    注解,也叫元数据。包、类、方法、局部变量(package, class, method, field)... 前面声明

    注解可以被其他程序(比如:编译器)读取;是一种额外的辅助信息;

    注解通过反射机制 来读取注解


     IOC(Bean)相关:

    @RestController // 写在Controller类之前,用于前后端分离JSON/XML形式数据 // 相当于下面5个:

      @Target (ElementType.TYPE)
      @Retention (RetentionPolicy.RUNTIME)
      @Documented 公共API会被工具文档化
      @Controller
      @ResponseBody

    @AutoWired // 写在实例化之前,让容器帮我们自动装配bean(与@Service@RestController@Repository相对应)

    @Component 泛指组件(3层3类),一般用在公共的方法

    @Resource 

    @Repository   对应持久层即Dao层,主要用于数据库相关操作

    @Service 对应服务层,主要涉及一些复杂的逻辑,需要用到Dao层

    @Controller(前后端分离一般不单独用这个,而用RestController)    对应控制层,主要用户接受用户请求并调用Service层返回数据给前端页面

    @Conditional 根据代码中设置的条件,装载不同的 bean

    @Bean

    @Score    声明 Bean的作用域(4种):singleton /prototype /request /session

    @Configuration    配置类前,申明用


     处理HTTP请求:

    @RequestMapping("/...")    //总的url

      @PostMapping("/...")     //针对具体接口,写在每一个方法前 //根据具体情况,如save就没有url

      @GetMapping("/...")  

      @PutMapping("/...")  //追加

      @DeleteMapping("/...")

    //下面2个都是在方法的参数括号中:

    @RequestParam

    @RequestBody

    @PathVariable 路径变量 

      

    ps:一个请求方法只可以有一个@RequestBody(JSON);但可以有多个@RequestParam和@PathVariable


    @SpringBootApplication   这个注解是SpringBoot 项目的基石,创建SpringBoot项目后会默认在主类加上。

      等价于@Configuration , @EnableAutoConfiguration 和 @ComponentScan 注解他们的 main 类:

      @Configuration

      @EnableAutoConfiguration  自动配置;类级别

      @ComponentScan

         @Controller , @Service , @Repository ==》3类component


     读取配置:

    @Value("${app.filePath}")   //读取比较简单的配置信息

    @ConfigurationProperties  //读取配置信息并与bean绑定


    参数校验:

    https://blog.csdn.net/weixin_43671737/article/details/108578122

    https://blog.csdn.net/qq_21187515/article/details/109673109

    https://segmentfault.com/a/1190000023471742

    常用的字段验证:

       @NotEmpty   @NotNull  @NotBlank  

       @AssertFalse  @AssertTrue  必须为正/负

       @Pattern(regex=,flag=) 正则表达式

       @Min  @Max  @Digits(integer, fraction)

       

    验证请求体(RequestBody):

      @Valid  

      如果验证失败,将抛出MethodArgumentNotValidException

    验证 PathVariable、RequestParam :

      要在类前加上@Validated注解;然后再在需要验证的数据前加上@Valid


     全局处理Controller异常:

    @ControllerAdvice

      

    @ExceptionHandler

      注解声明异常处理方法


    JPA相关(java持久层API)

       

       @Entity:class对应数据库实体

       @Table:设置表名

       @Id:表明字段为主键

       @GeneratedValue (strategy=GenerationType....) 主键生成策略

          TABLE表来保存主键  SEQUENCE序列机制生成主键  IDENTITY自增长  AUTO引擎帮助三选一

      

       @Column 声明字段

       

       @Transient 指定不持久化特定字段

       @Lob 声明大字段(最多4GB)


     事务@Transactional  

       

    @Transactional一般用于class和method;当method单独说明时,会覆盖class的


    JSON数据处理

    过滤JSON数据:

       

     @JsonFormat用于格式化json数据:

      

     @JsonUnwrapped 扁平化对象:

       扁平化后: 


     测试相关

       @Test 测试method    @Transactional回滚避免污染测试数据     @WithMockUser模拟真实用户

      


     3个内置注解:

      @Override  // 重写父类的方法

      @Deprecated  // 不推荐使用,但可以使用

      @SuppressWarnings  // 镇压警告

        


    4个元注解(为其他注解作说明):

      @Target //被描述的注解可以用在什么地方; FIELD 字段、METHOD 方法、TYPE接口/类/枚举

      @Retention (SOURCE < CLASS < RUNTIME) 一般都用RUNTIME表示在运行时可以看到

      @Documented 

      @Inherited

      

       @interface 是自定义注解的声明


     【实例】

    1)自定义注解:

     

     2)使用注解:

     


    lombok 插件 :

    使用步骤:

      1. 在IDEA中安装lombok插件

      2. Maven中导入lombok的jar包

      3. 在实体类(Do)上加注解即可


     

     

     有参构造/无参构造:


    lombok特点:虽然简便,但是可读性下降;舍弃一定的规范,获取方便;


    使用注解开发:

    注解开发是为了帮助:面向接口编程

    面向接口编程:

      根本原因是" 解耦 ":定义与实现分离(例如service和serviceImpl,dao和mapper.xml)

  • 相关阅读:
    KMP算法小结
    算法二叉搜索树之AVL树
    算法导论之红黑树的学习
    算法导论小结(一)
    感悟或摘抄
    js中神奇的东西
    简单了解webservice
    用<![CDATA[]]>将xml转义为 纯文本
    简单了解soap协议
    java写webservice接口
  • 原文地址:https://www.cnblogs.com/qyf2199/p/14435835.html
Copyright © 2011-2022 走看看