SpringBoot 常用注解
@SpringBootApplication 作用在启动类 Spring Boot的核心注解
主要组成:
@SpringBootConfiguration 组合了@Configuration 注解 实现类配置类 == xml
@EnableAutoConfiguation 打开自动配置功能
也可以关闭某个自动配置 关闭数据源的自动配置
@SpringBootApplication(Exclude=DataSourceAutoConfiguration.claa)
@ComponenScan 去扫描当前包子包的所有类
Spring组件扫描 == xml中 context:component-scan
@Component 标注一个类为Spring容器的Bean
(把普通pojo实例化到spring容器中,相当于配置文件中的)
@EnableConfigurationProperties注解的作用是:使使用 @ConfigurationProperties 注解的类生效。
如果一个配置类只配置@ConfigurationProperties注解,而没有使用@Component,那么在IOC容器中是获取不到properties 配置文件转化的bean。说白了 @EnableConfigurationProperties 相当于把使用 @ConfigurationProperties 的类进行了一次注入
@ConfigurationProperties 读取配置文件的注解
@Bean == xml 放到ioc容器中 作用在方法
@Scope(“singleton”) 声明SpringBean 的作用域 方法上
五种常见的 Spring Bean 的作用域:
singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。
prototype : 每次请求都会创建一个新的 bean 实例。
request : 每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP request 内有效。
session : 每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP session 内有效。
global-session:全局作用域,在一个全局的 HTTP Session 中,容器会返回该 Bean 的同一个实例
@ Configuration 用来声明这个类是个配置类 作用在类上
@ PathVariable用于获取路径参数
@RequestParam用于获取查询参数
@GetMapping(“/user/{id}/name”)
public List getUser(
@PathVariable("id ") Long id,
@RequestParam(value = “type”, required = false) String type ) {
…
}
如果我们请求的 url 是:/user/{123456}/teachers?type=web
那么我们服务获取到的数据就是:id =123456,type=web。
读取配置文件的注解:
application .yml:
Ace:
Id: 123
Name: admin
@Value(“
A
c
e
.
I
d
”
)
读取比较简单配置信息
@
V
a
l
u
e
(
“
{Ace.Id}”) 读取比较简单配置信息 @Value(“
Ace.Id”)读取比较简单配置信息@Value(“{Ace.Id}”)
String id; id==123
One:
A:123
B:
C:12
D:45
@ConfigurationProperties读取配置信息并与 bean 绑定
@Component 标注一个类为Spring容器的Bean
@ConfigurationProperties(prefix = “one”)
class LibraryProperties {
private String A;
@Data
public class User{
Private String C;
Private String D;
} …
}
@PropertySource(“classpath:user.properties”)
读取指定 properties 文件
@ConfigurationProperties, @PropertySource 和 @Component 配合来使用 否则不会 那么在IOC容器中是获取不到properties/yml 配置文件转化的bean 或者在启动类上用 @EnableConfigurationProperties(…class);
Hibernate Validator 框架:
用于校验表单中的数据是否符合规则
@NotEmpty 被注释的字符串的不能为 null 也不能为空
@NotBlank 被注释的字符串非 null,并且必须包含一个非空白字符
@Null 被注释的元素必须为 null
@NotNull 被注释的元素必须不为 null
@AssertTrue 被注释的元素必须为 true
@AssertFalse 被注释的元素必须为 false
@Pattern(regex=,flag=)被注释的元素必须符合指定的正则表达式
@Email 被注释的元素必须是 Email 格式。
@Min(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max=, min=)被注释的元素的大小必须在指定的范围内
@Digits (integer, fraction)被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
- 用户名
*/
@Length(min = 4,max=18,message = “用户名应为4-18位”)
private String username;
/**
- 密码,加密存储
*/
@Length(min = 6,max=18,message = “密码应为6-18位”)
private String password;
/**
- 注册手机号
*/
@Pattern(regexp = RegexPatterns.PHONE_REGEX,message = “手机号格式不正确”)
private String phone;
@ControllerAdvice 用于处理Controller层的异常
@ExceptionHandler :注解声明异常处理方法
事务 @Transactional 用于在方法上和类上
@MapperScan 去扫描mapper层
@Mapper mapper层的标识
Spring Cloud
@ EnableEurekaServer把当前微服务标记为Eureka注册中心
@EnableEurekaClient基于spring-cloud-netflix 把该微服务注册到注册中心
@EnableTransactionManagement 启动事务 == xml <tx:annotation-driven />
@ FeignClient(微服务的名字) feign的标识 远程调用
@ EnableFeignClients 该服务支持feing的远程调用
@ EnableZuulProxy 网关的标识写在主程序上启动zuul路由访问功能