Spring注解

@Configuration

一句话概括就是 @Configuration 中所有带 @Bean 注解的方法都会被动态代理,因此调用该方法返回的都是同一个实例。

Configuration 注解:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
    String value() default "";
}

从定义来看, @Configuration 注解本质上还是 @Component,因此 context:component-scan/ 或者 @ComponentScan 都能处理@Configuration 注解的类。

@Configuration 标记的类必须符合下面的要求:

  • 配置类必须以类的形式提供(不能是工厂方法返回的实例),允许通过生成子类在运行时增强(cglib 动态代理)。
  • 配置类不能是 final 类(没法动态代理)。
  • 配置注解通常为了通过 @Bean 注解生成 Spring 容器管理的类,
  • 配置类必须是非本地的(即不能在方法中声明,不能是 private)。
  • 任何嵌套配置类都必须声明为static。
  • @Bean 方法可能不会反过来创建进一步的配置类(也就是返回的 bean 如果带有 @Configuration,也不会被特殊处理,只会作为普通的 bean)。

参考:Spring @Configuration 和 @Component 区别

@Configuration和@Component的区别

同:都是注解在类上的注解
异:

  • 使用Configuration时在driver和spring容器之中的是同一个对象,而使用Component时是不同的对象
  • @Component范围广,所有类都可注解
  • @Value的成员变量和@Bean注解方法,就是一个配置类

参考:@Component和@Configuration作为配置类的差别

spring不返回某个字段给前端

1.@JsonIngoreProperties(value={"xxx})
注解使用在类名,接口头上

@JsonIngoreProperties(value={"username})
public interface User(){
}

2.@JsonIgnore
该注解用在字段的get方法上

@JsonIngore
public String getUserName{
    return this.username;
}

json与bean之间字段转换

@JsonProperty
json里的字段采用下划线格式,bean里的字段采用驼峰

@JsonProperty("user_name")
private String userName;

posted on 2019-01-09 00:40  粤B_Liao  阅读(192)  评论(0编辑  收藏  举报

导航