zoukankan      html  css  js  c++  java
  • springboot系列总结(二)---springboot的常用注解

    上一篇文章我们简单讲了一下@SpringBootApplication这个注解,申明让spring boot自动给程序进行必要的配置,他是一个组合注解,包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解,这里我们再讲一下springboot的其他注解。

    @RestController注解 是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直接填入HTTP响应体中,是REST风格的控制器。上一篇我们已经试过了把主程序入口那个类当做一个控制器。

    @PathVariable获取参数。

    @Controller:用于定义控制器类,在spring 项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping

    @RequestMapping:提供路由信息,负责URL到Controller中的具体函数的映射。

    @GetMapping、@PostMapping等:
    相当于@RequestMapping(value=”/”,method=RequestMethod.GetPostPutDelete等) 。是个组合注解;

    @ResponseBody:表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,用于构建RESTful的api。在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。该注解一般会配合@RequestMapping一起使用。示例代码:

    @RequestMapping(“/login”) 
    @ResponseBody //不加这注解跳页面,加了返回字符串 login
    public String login(){ 
    return ”login”; 
    }

    @Configuration:相当于传统的xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。

    @Import:用来导入其他配置类。

    @ImportResource:用来加载xml配置文件。

    @Autowired:自动导入依赖的bean,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作;

    @Service:一般用于修饰service层的组件

    @Repository:使用@Repository注解可以确保DAO或者repositories提供异常转译,这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。

    @Bean:用@Bean标注方法等价于XML中配置的bean。

    @Value:注入Spring boot application.properties配置的属性的值。示例代码:

    @Inject:等价于默认的@Autowired,只是没有required属性;

    @params:指定request中必须包含某些参数值是,才让该方法处理。

    @Component:泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

    @Bean:相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。

    @ComponentScan:注解在类上,扫描标注了@Controller等注解的类,注册为bean 。@ComponentScan 为 @Configuration注解的类配置组件扫描指令。@ComponentScan 注解会自动扫描指定包下的全部标有 @Component注解的类,并注册成bean,当然包括 @Component下的子注解@Service、@Repository、@Controller。 

    2.Jpa的注解

    @Entity:
    @Table(name=”“):
    表明这是一个实体类。一般用于jpa ,这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略;

    @Column:
    如果字段名与列名相同,则可以省略;

    @Id:
    表示该属性为主键;

    @GeneratedValue(strategy=GenerationType.SEQUENCE,generator = “repair_seq”):
    表示主键生成策略是sequence(可以为Auto、IDENTITY、native等,Auto表示可在多个数据库间切换),指定sequence的名字是repair_seq;

    @MappedSuperClass:
    用在确定是父类的entity上。父类的属性子类可以继承;

    @NoRepositoryBean:
    一般用作父类的repository,有这个注解,spring不会去实例化该repository;


    @SequenceGeneretor(name = “repair_seq”, sequenceName = “seq_repair”, allocationSize = 1):
    name为sequence的名称,以便使用,sequenceName为数据库的sequence名称,两个名称可以一致;

    @Transient:
    表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性. 
    如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic;

    @Basic(fetch=FetchType.LAZY):
    标记可以指定实体属性的加载方式;

    @JsonIgnore:
    作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响;

    @OneToOne :

    一对一:本表中指向另一个表的外键。
    @OneToMany:
    一对多:另一个表指向本表的外键。

    3.全局异常处理


    @ControllerAdvice:
    包含@Component。可以被扫描到。统一处理异常;

    @ExceptionHandler(Exception.class):
    用在方法上面表示遇到这个异常就执行以下方法。

    境随心转而悦,心随境转而烦
  • 相关阅读:
    MySQL锁(阻塞)
    MySQL锁类型(一致性是非锁定读、自增和外键)
    MySQL锁算法(行锁的三种算法以及解决幻读问题)
    MySQL锁概述
    MySQL锁问题(脏读、不可重复读、幻读)
    MySQL默认隔离级别对应解决的三种问题
    简单动态字符串
    限流
    # SpringBoot自定义线程池
    & 生产环境mysql问题记录
  • 原文地址:https://www.cnblogs.com/tomingto/p/11317498.html
Copyright © 2011-2022 走看看