注解

常用注解类型

@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

@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String firstName;
}

JSR303数据校验(@Validation)

@ConfigurationProperties @Validated 支持      @Value不支持

  @ConfigurationProperties
@Validated
public class Properties {

    @NotNull
    private String userName;
    
    @Email
    private String email;
    
}

 

使用原则:在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;如果专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;

 

posted on 2018-09-05 10:36  米虫爱喝咖啡  阅读(124)  评论(0编辑  收藏  举报

导航