注解
常用注解类型
@Validated 对po实体类进行校验
@AssertFalse 校验false
@AssertTrue 校验true
@DecimalMax(value=,inclusive=) 小于等于value,inclusive=true,是小于等于
@DecimalMin(value=,inclusive=) 与上类似
@Max(value=) 小于等于value
@Min(value=) 大于等于value
@NotNull 检查Null
@Past 检查日期
@Pattern(regex=,flag=) 正则
@Size(min=, max=) 字符串,集合,map限制大小
@Document
把一个java类声明为mongodb的文档,可以通过collection参数指定这个类对应的文档,标注在实体类上,类似于hibernate的entity注解。
@Id
文档的唯一标识,在mongodb中为ObjectId,它是唯一的,不可重复,自带索引,通过时间戳+机器标识+进程ID+自增计数器(确保同一秒内产生的Id不会冲突)构成。
@Transient
映射忽略的字段,该字段不会保存到mongodb,只作为普通的javaBean属性。
@Field
映射 mongodb中的字段名,可以不加,不加的话默认以参数名为列名。
@EnableAutoConfiguration,Spring Boot会自动根据你jar包的依赖来自动配置项目,一个项目只有一个带有该注解的类。
@SpringBootApplication申明让spring boot自动给程序进行必要的配置,等价于以默认属性使用@Configuration,@EnableAutoConfiguration和@ComponentScan
@PropertySource(value = "classpath:application.properties") 加载指定的属性文件
@ConfigurationProperties(prefix = "mongodb") 类级别的注解
@PropertySource( name="jdbc-bainuo-dev.properties",value= {"classpath:config/jdbc-bainuo-dev.properties"},ignoreResourceNotFound=false,encoding="UTF-8")
注解差异
1.@RestController和@Controller
@RestController注解相当于@ResponseBody + @Controller合在一起的作用。默认类中的方法都会以json的格式返回。
1)如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
2)如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。
2.@Configuration 和 @Component
@Configuration 中所有带 @Bean
注解的方法都会被动态代理,因此调用该方法返回的都是同一个实例。
3.@ConfigurationProperties 和 @value
@ConfigurationProperties | @value | |
功能 | 批量注入配置文件中的属性 | 一个个指定 |
松散绑定(松散语法) | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
所谓松散语法也就是属性命名规则(Relaxed binding)
- person.firstName:使用标准方式 - person.first-name:大写用- - person.first_name:大写用_ - PERSON_FIRST_NAME: 系统属性推荐使用这种写法
@ConfigurationProperties支持松散语法 @Value不支持松散语法
application.properties文件中有字段 persion.first-name
JSR303数据校验(@Validation)
@ConfigurationProperties @Validated 支持 @Value不支持
@Validated public class Properties { @NotNull private String userName; @Email private String email; }
使用原则:在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;如果专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;