zoukankan      html  css  js  c++  java
  • 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应用程序

  • 相关阅读:
    Ubuntu无法初始化软件包信息
    数组名做函数的参数
    Printf函数中%p代表什么数据类型
    assert()函数用法总结
    C语言printf 格式 zz
    零值指针指向何处? zz~
    命名空间“System.Net”中不存在类型或命名空间名称“Sockets”。是否缺少程序集引用?
    AD20配置为中文显示
    sharepoint:实现搜索功能
    sharepoint:爬网完成后上传新文档搜索不到(设定爬网Schedule)
  • 原文地址:https://www.cnblogs.com/coder-lzh/p/8983857.html
Copyright © 2011-2022 走看看