SpringBoot注解大全
常用配置注解:
@SpringBootApplication:最核心注解,用在SpringBoot主类上,标识这是SpringBoot应用,也是@Configuration、@EnableAutoConfiguration、@ComponentScan 这三个注解的组合。
@EnableAutoConfiguration:标识自动配置。
@Configuration:等同于spring的XML配置文件;使用Java代码可以检查类型安全。
@ComponentScan :组件扫描,标识此类会被spring自动扫描并且装入bean容器。
@Bean:用@Bean标注方法等价于XML中配置的bean。
@Value:注入application.properties配置的属性的值。
@Import:用来导入一个或者多个 @Configuration 注解修饰的类。
@ImportResource:用来导入一个或者多个 Spring 配置文件。
@EnableAsync : 开启异步任务的支持(多线程)
@Asyns : 声明这是一个异步任务,可以在类级别 和方法级别声明.
@EnableScheduling : 开启对计划任务的支持(定时器)
@Scheduled : 声明这是一个计划任务 支持多种计划任务,包含 cron. fixDelay fixRate
@profile: 为不同环境下使用不同的配置提供了支持
@ConfigurationProperties:用来加载额外的配置(如 .properties 文件),可用在 @Configuration 注解类,或者 @Bean 注解方法上面。
@EnableConfigurationProperties:一般要配合 @ConfigurationProperties 注解使用,用来开启对 @ConfigurationProperties 注解配置 Bean 的支持。
@AutoConfigureAfter: 用在自动配置类上面,表示该自动配置类需要在另外指定的自动配置类配置完之后。
有关conditional的注解:
@Conditional:标识一个 Spring Bean 或者 Configuration 配置文件,当满足指定的条件才开启配置。(Spring 4.0 添加的新注解)
@ConditionalOnBean(@ConditionalOnMissingBean):组合 @Conditional 注解,当容器中有指定的 Bean 才开启配置。
@ConditionalOnClass(@ConditionalOnMissingClass):组合 @Conditional 注解,当容器中有指定的 Class 才开启配置。
@ConditionalOnWebApplication(@ConditionalOnNotWebApplication):组合 @Conditional 注解,当前项目类型是 WEB 项目才开启配置。
@ConditionalOnProperty:组合 @Conditional 注解,当指定的属性有指定的值时才开启配置。
@ConditionalOnExpression:组合 @Conditional 注解,当 SpEL 表达式为 true 时才开启配置。
@ConditionalOnJava:组合 @Conditional 注解,当运行的 Java JVM 在指定的版本范围时才开启配置。
@ConditionalOnResource:组合 @Conditional 注解,当类路径下有指定的资源才开启配置。
@ConditionalOnJndi: 组合 @Conditional 注解,当指定的 JNDI 存在时才开启配置。
@ConditionalOnCloudPlatform:组合 @Conditional 注解,当指定的云平台激活时才开启配置。
@ConditionalOnSingleCandidate: 组合 @Conditional 注解,当指定的 class 在容器中只有一个 Bean,或者同时有多个但为首选时才开启配置
SpringMVC:
@ResponseBody:标识该方法的返回结果直接写入HTTP response body中,直接返回json数据,一般在异步获取数据时使用,用于构建RESTful的api,配合@RequestMapping一起使用。
@GetMapping:是@RequestMapping(method = RequestMethod.GET)的缩写,简化常用的HTTP方法的映射,例如@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping。(Spring4.3引进)
@RequestMapping:提供路由信息,负责URL到Controller中的具体函数的映射。
该注解有6个属性:
params:指定request中必须包含某些参数值是,才让该方法处理。
headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。
value:指定请求的实际地址,指定的地址可以是URI Template 模式
method:指定请求的method类型, GET、POST、PUT、DELETE等
consumes:指定处理请求的提交内容类型(Content-Type),如application/json,text/html;
produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回
@RequestParam:主要用于接收http://host:port/path?参数名=参数值数据
@GetMapping("/paySerial") public String demo( @RequestParam("payId") String payId) { }
@PathVariable:路径变量,主要用于接收http://host:port/path/{参数值}数据。
@GetMapping("/paySerial/{context}") public String demo( @PathVariable("context") String payId) { }
声明Bean的注解:
@RestController:标识控制层,@ResponseBody和@Controller的合集。
@Controller:标识控制层。
@Service:标识业务层。
@Repository :标识数据访问层。
@Component:当组件不好归类分层时(控制层、业务层、数据层),我们可以使用这个注解进行标注。
注入Bean的注解:
@Autowired:自动导入依赖的bean,依赖注入(by type自动注入)。
@Qualifier:当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定,与@Autowired配合使用。
@Resource:自动导入依赖的bean,依赖注入(by name自动注入)。有两个重要属性,分别是name和type,name属性解析为bean的名字,而type属性则被解析为bean的类型。若使用name属性,则使用byName的自动注入策略,使用type属性则使用byType的自动注入策略。
@Inject:等价于默认的@Autowired,但没有required属性.
全局异常注解:
@ControllerAdvice:包含@Component。可以被扫描到。统一处理异常。
@ExceptionHandler(Exception.class):用在方法上面表示遇到这个异常就执行以下方法。
AOP切面编程注解:
@Aspect : 声明这是一个切面
@After @Before. @Around :定义切面,可以直接将拦截规则(切入点 PointCut)作为参数
@PointCut : 专门定义拦截规则 然后在 @After @Before. @Around 中调用
@Transcational : 事务处理
@Cacheable : 数据缓存
@EnableAaspectJAutoProxy : 开启Spring 对 这个切面(Aspect )的支持
@Target (ElementType.TYPE):元注解,用来指定注解修饰类的那个成员 -->指定拦截规则
@Retention(RetentionPolicy.RUNTIME) :当定义的注解的@Retention为RUNTIME时,才能够通过运行时的反射机制来处理注解.-->指定拦截规则
JPA注解
@Entity:@Table(name=" "),标识一个实体类。在JPA中两个注解一般一起使用,若表名和实体类名相同的话@Table可以省略。
@MappedSuperClass:用在确定是父类的entity上。父类的属性子类可以继承。
@OneToOne、@OneToMany、@ManyToOne:对应hibernate配置文件中的一对一,一对多,多对一。
@Transient:表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性。
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = “ “):标识为一个实体生成一个唯一标识的主键。
strategy声明主键生成策略:SEQUENCE(由数据库的序列产生主键, MYSQL不支持)、Auto(默认)、IDENTITY(采用数据库自增长生成, Oracle不支持)、native(特定的数据库产生主键,便于移植),generator 声明主键生成器名称。
@SequenceGeneretor(name = “ ”, sequenceName = “ ”, allocationSize = 1):name为sequence的名称,sequenceName为数据库的sequence名称,可一致。
@NoRepositoryBean:用作父类的repository,spring不会去实例化该repository。
@JsonIgnore:作用是json序列化时将Javabean中的一些属性忽略掉,序列化和反序列化都受影响。
@JoinColumn(name=” ”):一对一:本表中指向另一个表的外键。一对多:另一个表指向本表的外键。
@Column:如果字段名与列名相同,则可以省略。
@Id:表示该属性为主键。