• springboot的注解详解


    配置类相关:

    @PropertySource(value = "classpath:test.properties")   //我们都把配置文件写到application.yml中。有时我们不愿意把配置都写到application配置文件中,这时需要我们自定义配置文件,比如test.properties:

    @ConfigurationProperties(prefix = "com.forezp")         //在配置文件中的前缀,属性自动注入

    @EnableConfigurationProperties      //@ConfigurationProperties注解主要用来把properties配置文件转化为bean来使用的,而@EnableConfigurationProperties注解的作用是@ConfigurationProperties注解生效。如果只配置@ConfigurationProperties注解,在IOC容器中是获取不到properties配置文件转化的bean的。一般不用加,因为在我们的的appliacation的启动类@SpringBootApplication注解中已经包含了@ComponentScan和@EnableConfigurationProperties注解。

    @EntityScan("com.ihrm")  实体类扫描包

    @SpringBootApplication(scanBasePackages = "com.ihrm")  启动类扫描

    @ComponentScan(basePackages={"com.xuecheng.manage_cms"})//扫描本项目下的所有类

    自动配置 (Spring-boot-autoconfigure包下的)

    https://www.jianshu.com/p/68a75c093023

    @ConditionalOnBean 配置了某个特定bean  (仅仅在当前上下文中存在某个对象时,才会实例化一个Bean)

    @ConditionalOnBean(Xxxx.class)
    仅仅在当前上下文中存在Xxxx对象时,才会实例化一个Bean 
    也就是 只有当Xxxx.class 在spring的applicationContext中存在时  这个当前的bean才能够创建

    ------------------第二种用法:用name来指定
    @ConditionalOnBean(name="redisTemplate")

    @ConditionalOnMissingBean 没有配置特定bean  (仅仅在当前上下文中不存在某个对象时,才会实例化一个Bean)

    @ConditionalOnMissingBean(Xxxx.class)
    当前上下文中不存在Xxxx对象时,才会实例化一个Bean 
    也就是 只有当Xxxx.class 在spring的applicationContext中不存在时  这个当前的bean才能够创建

    @ConditionalOnClass (xxx.class)   (当xxx.class存在时,才会实例化一个Bean)
    @ConditionalOnMissingClass (当xxx.class不存在时,才会实例化一个Bean)
    @ConditionalOnProperty 给定配置属性中包含某个值

    @Retention(RetentionPolicy.RUNTIME)
    @Target({ ElementType.TYPE, ElementType.METHOD })
    @Documented
    @Conditional(OnPropertyCondition.class)
    public @interface ConditionalOnProperty {
    
        String[] value() default {}; //数组,获取对应property名称的值,与name不可同时使用  
      
        String prefix() default "";//property名称的前缀,可有可无  
      
        String[] name() default {};//数组,property完整名称或部分名称(可与prefix组合使用,组成完整的property名称),与value不可同时使用  
      
        String havingValue() default "";//可与name组合使用,比较获取到的属性值与havingValue给定的值是否相同,相同才加载配置  
      
        boolean matchIfMissing() default false;//缺少该property时是否可以加载。如果为true,没有该property也会正常加载;反之报错  
      
        boolean relaxedNames() default true;//是否可以松散匹配,至今不知道怎么使用的  
    } 
    }
    通过其两个属性name以及havingValue来实现的,其中name用来从application.properties中读取某个属性值。
    如果该值为空,则返回false;
    如果值不为空,则将该值与havingValue指定的值进行比较,如果一样则返回true;否则返回false。
    如果返回值为false,则该configuration不生效;为true则生效。
    @ConditionalOnProperty(prefix = "guns", name = "spring-session-open", havingValue = "true")
    就是说 配置文件中 有没有 guns.spring-session-open的属性,有的话,取到这个属性的值,如何取到的值和havingValue的值一样就注册,不一样就不注册


    @ConditionalOnResource classpath有指定资源

    当指定的资源文件出现在classpath中生效
    
    @Bean
    @ConditionalOnResource(resources="classpath:shiro.ini")
    protected Realm iniClasspathRealm()


    @ConditionalOnWebApplication 是一个web应用程序
    @ConditionalOnNotWebApplication 不是一个web应用程序

  • 相关阅读:
    Casperjs循环执行(重复执行不退出)
    casperjs批量执行多个url
    CasperJS API介绍
    phantomjs waitFor
    phantomjs 长图截屏
    Linux Shell函数
    全废话SQL Server统计信息(2)——统计信息基础
    JavaScript推断undefined的技巧
    Activity Test1
    Android触摸事件(五)-CropBitmapActivity关于裁剪工具的使用
  • 原文地址:https://www.cnblogs.com/coder-lzh/p/8983857.html
Copyright © 2020-2023  润新知