spring boot常用注解(持续更新中)

spring 注解开发

  1. @SpringBootApplication:包含了
    1. @ComponentScan
    2. @Configuration
    3. @EnableAutoConfiguration注解
    4. 其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。
注解参数参数类型注解参数默认值注解参数意义
excludeclass 数组{}指定排除哪些类
excludeNamestring 数组{}指定哪些名字的bean被排除
basePackagesstring 数组{}指定扫描哪些包下面的class
basePackageClassesclass 数组{}指定扫描包里面的指定类进行加载
  1. @Configuration 等同于spring的XML配置文件;使用Java代码可以检查类型安全。
注解参数参数类型注解参数默认值注解参数意义
valuestring“”代表该配置类注入容器中的名字,如果为 ""的话则为类名字且第一个字母小写
  1. @EnableAutoConfiguration 自动配置。
注解参数参数类型注解参数默认值注解参数意义
excludeclass数组{}排除哪些类不扫描
excludeNamestring 数组{}指定哪些名字为指定的名字的bean不被注入
  1. @ComponentScan 组件扫描,可自动发现和装配一些Bean。
注解参数参数类型注解参数默认值注解参数意义
valuestringbasePackages默认扫描启动类下面的所有组件bean
basePackagesstringbasePackages默认扫描启动类下面的所有组件bean
basePackageClassesclass 数组{}{@link #basePackages}的类型安全替代方案,用于指定包扫描带注释的组件。 将扫描指定的每个类的包。

考虑在每个包中创建一个特殊的无操作标记类或接口

nameGeneratorBeanNameGenerator 接口实现类BeanNameGenerator{@link BeanNameGenerator}类,用于命名检测到的组件在Spring容器内。
scopeResolverScopeMetadataResolver接口实现类AnnotationScopeMetadataResolver.class{@link ScopeMetadataResolver}用于解析检测到的组件的范围。
resourcePatternstring××/×.class正则表达式确定扫描的类
useDefaultFiltersbooleantrue是否使用默认的过滤器扫描bean
includeFiltersFilter注解{}指定使用哪些类,可以自定义注解并引用该参数引入到spring的扫描中,然后注入容器中
excludeFiltersFilter注解{}指定排除哪些类,用于指定如何排除bean的规则
lazyInitbooleanfalse是否启动懒加载
  1. @Component可配合CommandLineRunner使用,在程序启动后执行一些基础任务。
注解参数参数类型注解参数默认值注解参数意义
valuestring“”该bean组件的名字
  1. @Slf4j 日志注解
注解参数参数类型注解参数默认值注解参数意义
topic日志类型“”设置构造的Logger的类别。 默认情况下,它将使用放置注释的类型。
  1. @RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器。
注解参数参数类型注解参数默认值注解参数意义
valuestring“”该bean组件的名字
  1. @Autowired自动导入,按类型装配。默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用

注意事项:
在使用@Autowired时,首先在容器中查询对应类型的bean
如果查询结果刚好为一个,就将该bean装配给@Autowired指定的数据
如果查询的结果不止一个,那么@Autowired会根据名称来查找。
如果查询的结果为空,那么会抛出异常。解决方法时,使用required=false

注解参数参数类型注解参数默认值注解参数意义
requiredbooleantrue是否必须注入到容器中,如果未false则入股没有注入到容器中并不报错,否则报错
  1. @Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定,
    如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。
注解参数参数类型注解参数默认值注解参数意义
namestring“”资源的JNDI名称。 对于字段注释,默认为字段名称。 对于方法注释,默认值是JavaBeans属性名称对应方法。 对于类注释,没有默认值并且必须指定。
lookupstring“”引用指向的资源的名称。 它可以使用全局JNDI名称链接到任何兼容资源。
typeclassjava.lang.Object.class资源的Java类型。 对于字段注释,默认值是字段的类型。 对于方法注释,缺省值是JavaBeans属性的类型。对于类注释,没有默认值,这必须是指定。
authenticationTypeAuthenticationTypeAuthenticationType.CONTAINER;用于此资源的身份验证类型。这可以为表示a的资源指定任何支持类型的连接工厂,必须不为其他类型的资源指定。
shareablebooleantrue指示是否可以在此组件与其他组件之间共享此资源。可以为表示任何受支持类型的连接工厂的资源指定此资源,并且不得为其他类型的资源指定此资源。
mappedNameString“”此资源应映射到的产品特定名称。
descriptionstring“”描述该资源
  1. @PathVariable获取参数。
注解参数参数类型注解参数默认值注解参数意义
value/namestring“”在请求url路径中获取数据,且在映射路径中可以使用正则表达式验证参数值是否符合要求
requiredbooleantrue是否必须有这个参数值
  1. @JsonBackReference解决嵌套外链问题。

  2. @JsonBackReference标注的属性在序列化(serialization,即将对象转换为json数据)时,会被忽略(即结果中的json数据不包含该属性的内容)

  3. @JsonBackReference的作用相当于@JsonIgnore,此时可以没有@JsonManagedReference。但在反序列化(deserialization,即json数据转换为对象)时,如果没有@JsonManagedReference,则不会自动注入

  4. @JsonBackReference标注的属性(被忽略的父或子);如果有@JsonManagedReference,则会自动注入自动注入@JsonBackReference标注的属性。

  5. @JsonIgnore:直接忽略某个属性,以断开无限递归,序列化或反序列化均忽略。当然如果标注在get、set方法中,则可以分开控制,序列化对应的是get方法,反序列化对应的是set方法。在父子关系中,当反序列化时,@JsonIgnore不会自动注入被忽略的属性值(父或子),这是它跟@JsonBackReference和@JsonManagedReference最大的区别。

  6. @Bean 用于注入一个bean

注解参数参数类型注解参数默认值注解参数意义
name/valuestring“”注入bean的名字,如果是默认值则为注入时方法的名字
autowireAutowireAutowire.NO是否通过名称或类型通过基于约定的自动装配注入依赖项,请注意,此自动装配模式仅基于外部驱动的自动装配按照约定在bean属性setter方法上,类似于XML bean定义。默认模式允许注释驱动的自动装配。 “不”是指仅外部驱动自动装配,不影响任何自动装配要求bean类本身通过注释表达
initMethodString”“初始化期间在bean实例上调用的方法的可选名称。不常用,因为可以直接以编程方式调用该方法在Bean注释方法的主体内。默认值为{@code“”},表示不调用init方法。
destroyMethodstring“”关闭时调用bean实例的方法的可选名称
  1. @Conditional是Spring4新提供的注解,它的作用是按照一定的条件进行判断,满足条件给容器注册bean。

    • 参考url: https://blog.csdn.net/xcy1193068639/article/details/81491071
    • 派生类为:
      • @ConditionalOnMissingBean
      • @ConditionalOnNotWebApplication
      • @ConditionalOnProperty
      • @ConditionalOnBean
      • @ConditionalOnClass
      • @ConditionalOnCloudPlatform(value = CloudPlatform.CLOUD_FOUNDRY)
      • @ConditionalOnJava(value = ConditionalOnJava.JavaVersion.EIGHT)
      • @ConditionalOnJndi
      • @ConditionalOnResource
      • @ConditionalOnEnabledResourceChain
      • @ConditionalOnWebApplication
  2. @Scope:注解在类上,描述spring容器如何创建Bean实例。

注解参数参数类型注解参数默认值注解参数意义
value/scopeNamestring“”singleton: 表示在spring容器中的单例,通过spring容器获得该bean时总是返回唯一的实例,prototype:表示每次获得bean都会生成一个新的对象,request:表示在一次http请求内有效(只适用于web应用),session:表示在一个用户会话内有效(只适用于web应用),globalSession:表示在全局会话内有效(只适用于web应用)
proxyModeScopedProxyModeScopedProxyMode.DEFAULT指定是否应将组件配置为范围代理,如果是,则代理应该是基于接口还是基于子类,默认为{@link ScopedProxyMode#DEFAULT},通常表示除非有不同的默认值,否则不应创建范围代理
  1. @Value 注解在变量上,从配置文件中读取,读取是由加载顺序的,如果为空请判断是否该bean加载是否提前了
注解参数参数类型注解参数默认值注解参数意义
valuestring无默认,必填在配置文件中的位置
  1. @ConfigurationProperties 赋值,将注解转换成对象。给对象赋值。
注解参数参数类型注解参数默认值注解参数意义
prefix/valuestring“”在配置文件中的位置
ignoreInvalidFieldsbooleanfalse标记表示绑定到此对象时应忽略无效字段。
ignoreNestedPropertiesbooleanfalse标记表示绑定到此对象的字段中包含句点 名称应该被忽略
ignoreUnknownFieldsbooleantrue标记表示绑定到此对象时应忽略未知字段。未知字段可能是属性中出错的标志。
exceptionIfInvalidbooleantrue标记表示如果可以使用Validator,则应引发异常,该类使用{@link Validated @Validated}注释,验证失败。 如果它设置为false,将吞下验证错误。 他们将被记录,但是不传播给调用者
  1. @JsonView json工具类

使用方法

@Data
public class User {

    public interface SimpleUser{}

    public interface DetailUser extends SimpleUser{}

    @JsonView(value = SimpleUser.class)
    private Integer age;

    @JsonView(value = SimpleUser.class)
    @JsonBackReference
    private String name;

    @JsonView(value = DetailUser.class)
    private String password;


    public static void main(String[] args) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        //创建对象
        User user = new User();
        user.setAge(10);
        user.setName("zhangpei");
        user.setPassword("dfafafafas");
        //序列化
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        objectMapper.writerWithView(User.DetailUser.class).writeValue(bos, user);
        System.out.println(bos.toString());

        bos.reset();
        objectMapper.writerWithView(User.SimpleUser.class).writeValue(bos, user);
        System.out.println(bos.toString());
    }
}
注解参数参数类型注解参数默认值注解参数意义
valueclass数组{}指定该json属于哪个类
  1. @RestControllerAdvice rest服务中controller异常处理方法类
注解参数参数类型注解参数默认值注解参数意义
basePackages/valuestring 数组{}扫描的基础包
  1. @GuardedBy(value = “lock”) 对象被哪个锁保护着需要同步,只是一个标识
注解参数参数类型注解参数默认值注解参数意义
valuestring必填1. @GuardedBy( “this” ) 受对象内部锁保护 @GuardedBy( “fieldName” ) 受 与fieldName引用相关联的锁 保护 2. @GuardedBy( “ClassName.fieldName” ) 受 一个类的静态field的锁 保存 3. @GuardedBy( “methodName()” ) 锁对象是 methodName() 方法的返值,受这个锁保护。 4. @GuardedBy( “ClassName.class” ) 受 ClassName类的直接锁对象保护。而不是这个类的某个
  1. @FrameworkEndpoint @Controller的同义词,但仅用于框架提供的端点(因此它永远不会与用@Controller定义的用户自己的端点冲突)。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值