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.Get\Post\Put\Delete等) 。是个组合注解;

@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):
用在方法上面表示遇到这个异常就执行以下方法。

 

posted @ 2019-08-07 20:09  tomingto  阅读(198)  评论(0编辑  收藏  举报