需要记住的SpringBoot常用注解,整理持续更新ing

#一、SpringBoot(Spring)

  • @SpringBootApplication
    组合注解,等同于@Configuration+@EnableAutoConfiguration+@ComponentScan的合集
  • @EnableAutoConfiguration
    开启自动化配置,一般加在主类上
  • @ComponentScan
    组件扫描,默认就会装配标识了@Controller,@Service,@Repository,@Component等注解的类到spring容器中,相当于xml中的<context:component-scan base-package=”com.singleZhang.xxx”/>
  • @Configuration
    用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,相当于xml中的
  • @Bean
    相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理
  • @Component
    泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注
  • @Repository
    用于标注数据访问组件,即DAO组件
  • @Controller
    用于标注是控制层组件,需要返回页面时请用@Controller而不是@RestController
  • @ResponseBody
    表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,比如异步获取json数据
  • @RestController
    用于标注控制层组件,包含@Controller和@ResponseBody
  • @Service
    用于标注业务层组件
  • @RequestBody
    参数前加上这个注解之后,认为该参数必填。表示接受json字符串转为对象 List等
  • @RequestMapping
    用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径
  • @GetMapping、@PostMapping
    相当于@RequestMapping(value=”/”,method=RequestMethod.Get/Post/Put/Delete等) 。是个组合注解
  • @RequestParam
    用在方法的参数前面。相当于 request.getParameter,如@RequestParam(defaultValue = “1”) Integer page;
  • @PathVariable
    路径变量。如 @RequestMapping(value = “/salary/{ids}”, method = RequestMethod.DELETE)public RespBean deleteSalary(@PathVariable String ids) {…}
  • @AutoWired
    byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作
    当加上(required=false)时,就算找不到bean也不报错
  • @ConfigurationProperties
    自定义对bean配置一组相同前缀的属性
@ConfigurationProperties(prefix = "redisson")
public class RedissonProperties {...}

@EnableConfigurationProperties(RedissonProperties.class)
public class RedissonAutoConfiguration {
    @Autowired
    private RedissonProperties redssionProperties;

    @Bean
    @ConditionalOnProperty(name="redisson.address")
    RedissonClient redissonSingle() {
        Config config = new Config();
        SingleServerConfig serverConfig = config.useSingleServer()
                .setAddress(redssionProperties.getAddress())
                .setTimeout(redssionProperties.getTimeout())
                .setConnectionPoolSize(redssionProperties.getConnectionPoolSize())
                .setConnectionMinimumIdleSize(redssionProperties.getConnectionMinimumIdleSize());
        if(StringUtils.isNotBlank(redssionProperties.getPassword())) {
            serverConfig.setPassword(redssionProperties.getPassword());
        }
        
        return Redisson.create(config);
    }

}
  • @EnableTransactionManagement
    Spring Boot的事务管理注解,用于开启事务支持,之后便可在service层中使用@Transactional注解

#二、Jpa

  • @Entity、@Table(name=”“)
    表明这是一个实体类,一般用于jpa 。
    这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略
  • @MappedSuperClass
    用在确定是父类的entity上。父类的属性子类可以继承
  • @NoRepositoryBean
    一般用作父类的repository,有这个注解,spring不会去实例化该repository
  • @Column
    如果字段名与列名相同,则可以省略
  • @Id
    表示该属性为主键
  • @GeneratedValue(strategy=GenerationType.SEQUENCE,generator = “repair_seq”)
    表示主键生成策略是sequence(type:TABLE、SEQUENCE、IDENTITY、AUTO),指定sequence的名字是repair_seq
  • @SequenceGeneretor(name = “repair_seq”, sequenceName = “seq_repair”, allocationSize = 1)
    name为sequence的名称,以便使用,sequenceName为数据库的sequence名称,两个名称可以一致
  • @Transient
    表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性
  • @JsonIgnore
    作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响
  • @JoinColumn(name=”loginId”)
    一对一:本表中指向另一个表的外键;
    一对多:另一个表指向本表的外键
  • @OneToOne(fetch=FetchType.LAZY,cascade = CascadeType.ALL)
    一对一
  • @OneToMany(cascade = CascadeType.ALL)
    一对多
  • @ManyToOne
    多对一
  • @ManyToMany
    多对多,需要和@JoinTable表结合使用,@ManyToMany总是使用中间关系连接表来存储关系
@Entity
public class Student {
    @Id
    private String id;
    @ManyToMany(mappedBy = "students")
    private List<Teacher> teachers;
}

@Entity
public class Teacher {
    @Id
    private String id;
    @ManyToMany
    private List<Student> students;
}

因为是双向的,加入mappedBy,使中间表只有一张。

  • @Query
    自定义sql查询语句
    // Menu 为实体Entity类
    @Query("select max(sort) from Menu m where m.pid = ?1 and m.status <> " + StatusConst.DELETE)
    public Integer findSortMax(long pid);
    //使用表名的话,需要加 nativeQuery = true
    @Query("select max(sort) from sys_menu m where m.pid = ?1 and m.status <> " + StatusConst.DELETE,nativeQuery=true)
    public Integer findSortMax(long pid);

#三、全局异常处理

  • @ControllerAdvice
    包含@Component。可以被扫描到。统一处理异常
  • @ExceptionHandler(Exception.class)
    用在方法上面表示遇到这个异常就执行以下方法

#四、SpringCloud

  • @EnableEurekaServer
    用在springboot启动类上,表示这是一个eureka服务注册中心
  • @EnableDiscoveryClient
    用在springboot启动类上,表示这是一个服务,可以被注册中心找到
  • @LoadBalanced
    开启负载均衡能力
  • @EnableCircuitBreaker
    用在启动类上,开启断路器功能
  • @EnableConfigServer
    用在启动类上,表示这是一个配置中心,开启Config Server
  • @EnableZuulProxy
    开启zuul路由,用在启动类上
    -@SpringCloudApplication
    组合注解,包含@SpringBootApplication、@EnableDiscovertyClient、@EnableCircuitBreaker
    分别是SpringBoot注解、注册服务中心Eureka注解、断路器注解。对于SpringCloud来说,这是每一微服务必须应有的三个注解。

#五、Mybatis

  • @MapperScan
    扫描指定包下的mapper接口
@MapperScan("com.singlezhang.zxadmin.*.mapper")

继续补充…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值