zoukankan      html  css  js  c++  java
  • IoC注解

    @Configuration

    代表这是一个配置文件,Spring的容器会根据它来生成IoC容器去配置Bean

    @Bean

    代表将initUser方法返回的POJO装配到IoC容器中,而其属性name定义这个Bean的名称,如果没有配置它,则将方法名称"initUser"作为Bean的名称保存到Spring IoC容器中。
    eg--- @Bean(initMethod = “init”,destroy = “destroy” )-----可以使用注解@Bean来配置自定义初始化和销毁方法。

    @Component

    是标明哪个类被扫描进入 Spring IoC容器,默认IoC容器就会把类名第一个字母作为小写,其它不变作为Bean的名称放入IoC容器中。
    	includeFilters是定义满足过滤器(Filter)条件的Bean才去扫描。
    	excludeFilters则是排除过滤器条件的Bean,他们都需要通过一个注解@Filter去定义,
    	它有一个type类型,这里可以定义为注解或者正则式等类型。
    	classes定义注解类,pattern定义正则式类。
    eg----	@ComponentScan(basePackages="com.springboot.chapter3.*",excludeFilters = {@Filter(classes = {UserService.class})})
    	解释:由于加入了excludeFilters的配置,使标注了@Service的类将不被IoC容器扫描注入,这样就可以把UserService类排除到Spring IoC容器中了。
    

    @ComponentScan

    是标明采用何种策略去扫描装配Bean。
    	      有一个配置项lazyInit,只可以配置Boolean值,且默认值为false,也就是默认不进行延迟初始化,
                      因此在默认情况下Spring会对Bean进行实例化和依赖注入对应的属性值。
                     (有些时候有些Bean会受到变化因素的影响,这时我们倒希望是取出Bean的时候完成初始化和依赖注入,
                      换句话说就是让那些Bean只是将定义发布到IoC容器而不做实例化和依赖注入,当我们取出来的时候才做初始化和依赖注入等操作。)
    

    @Value

    是指定具体的值,使得Spring IoC给予对应的属性注入对应的值。
    eg--- @Value("1") private Long id;

    @AliasFor

    首先可以通过配置项basePackages定义扫描的包名,在没有定义的情况下,它只会扫描当前包和其子包下的路径;还可以通过 basePackageClasses定义扫描的类;

    @Autowired

    它会根据属性的类型(by type)找到对应的Bean进行注入。 规则:首先它会根据类型找到对应的Bean,如果对应类型的Bean不是唯一的,那么它会根据其属性名称和Bean的名称进行匹配。 如果匹配得上,就会使用该Bean;如果还无法匹配,就会抛出异常。

    @Primary

    它是一个优先权的注解。当你发现有多个同样类型的Bean时,请优先使用我注入。(通过这个消除歧义性)

    @Qualifier

    它的配置项value需要一个字符串去定义,它将与@Autowired组合在一起,通过类型和名称一起找到Bean。(通过这个消除歧义性)
    eg--- @Autowired
    @Qualifier("dog")
    private Animal animal = null; //Animal 有多个实现类,比如:Cat、Dog等
    还可以在带参构造函数中使用: public BussinessPerson( @AutoWired @Qualifier("dog") Animal animal ){ .................. };

    @PostConstruct

    初始化方法

    @PreDestroy

    销毁方法

    @ConfigurationProperties

    在注解中配置的字符串database,将与POJO的属性名称组成属性的全限定名去配置文件里查找,这样就能将对应的属性读入到POJO中。

    @PropertySource

    去定义对应的属性文件,把它加载到Spring的上下文中。
    eg---- @PropertySource(value={"classpath:jdbc.properties"},ignoreResourceNotFound=true)
    value可以配置多个配置文件。使用classpath前缀,意味着去类文件路径下找到属性文件;
    ignoreResourceNotFound 则是是否忽略配置文件找不到的问题。默认值为false,也就是没有找到属性文件,就会报错。

    @Conditional

    它的作用是按照一定的条件进行判断,满足条件给容器注册bean。
    eg--- @Conditional(DatabaseConditional.class)
    配置了类DatabaseConditional,那么这个类就必须实现Condition接口。对于Condition接口则要求实现matches方法。

    @Profile({...})

    表明一个组件在一个或多个特定profile处于活跃状态时是可以注册的

    @Profile

    可以通过以下任何方式使用:  
     1.在任何直接或间接使用@Component和@Configuration的类上作为一个类型注解使用  
     2.作为元注解,用于组成自定义构造型注解   
    3.作为任何@Bean方法的方法级注解
    补充:
    1.@Service、@Controller都间接使用了@Component
    2.元注解(meta-annotation)就是注解类上的注解


    如果使用@Profile标记@Configuration类, 如果没有任何的profile符合标准, 则将绕过与该类关联的所有@Bean方法和@Import注解。

    profile字符串可以包含简单的profile名称(例如"p1") 或**profile表达式。 **

    Profile表达式允许表达更复杂的profile逻辑, 例如"p1&p2" 。

    再次补充:

    profile表达式支持以下运算符:

    1. ! - 逻辑非

    2. & - 逻辑并

    3. | - 逻辑或

    注意: 当多个混用时, 遇事不决加括号

    @Profile({"a", "b"})这种用法等同于使用逻辑或 (我猜的)

    附上文档地址: @Profile

    @ImportResource

    通过它可以引入对应的XML文件,用以加载Bean。

    如有错误请多见谅。

    @Profile可以参考文档地址,我整理的比较复杂。

  • 相关阅读:
    [Android应用开发] 01.快速入门
    [wordpress使用]004_导入多媒体
    【Python3爬虫】使用异步协程编写爬虫
    【Python3爬虫】斗鱼弹幕爬虫
    Pycharm2018永久破解的办法
    【Python3爬虫】大众点评爬虫(破解CSS反爬)
    【Python3爬虫】用Python发送天气预报邮件
    【Python3爬虫】猫眼电影爬虫(破解字符集反爬)
    【Python3爬虫】微博用户爬虫
    【Python3爬虫】拉勾网爬虫
  • 原文地址:https://www.cnblogs.com/miniSimple/p/12577149.html
Copyright © 2011-2022 走看看