Skip to content

一、@EnableXXX 有什么作用 ?

  • 作用:启动的时候,加入该注解,就会将配置再@Enable中的实体类注入到Spring IoC 容器中。

二、@EnableXXX 实例

1. 创建一个 @EnableWin10 注解

  • 作用:启动的时候,将 Win10 对象注入到 Spring IoC 容器中。
  • 实现方式最终还是通过 @Import 注解注入的。
java

package org.example.spring5.annotation;

import org.example.spring5.domain.Win10;
import org.springframework.context.annotation.Import;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author: Calvin <br>
 * @date: 2020/11/26 10:50 <br>
 * @since: 1.0 <br>
 * @description: EnableWin10 <br>
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Import(value = Win10.class)
public @interface EnableWin10 {
}

2. 在 SpringConfiguration.java 类中添加 @EnableWin10 注解

java
package org.example.spring5.config;

import org.example.spring5.annotation.EnableWin10;
import org.example.spring5.domain.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * @author: Calvin <br>
 * @date: 2020/11/25 14:18 <br>
 * @since: 1.0 <br>
 * @description: SpringConfig <br>
 */
@Configuration
@EnableWin10
@ComponentScan(value = "org.example.spring5") 
public class SpringConfiguration {

}

3. 启动程序

java
package org.example.spring5;

import org.example.spring5.config.SpringConfiguration;
import org.example.spring5.domain.Win10;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * @author: Calvin <br>
 * @date: 2020/11/25 14:27 <br>
 * @since: 1.0 <br>
 * @description: SpringApplication <br>
 */
public class SpringApplication {

    private static AnnotationConfigApplicationContext annotationConfigApplicationContext;

    public static void main(String[] args) {
        annotationConfigApplicationContext  = new AnnotationConfigApplicationContext(SpringConfiguration.class);
        System.out.println("Bean 对象已装配完毕...");
        Win10 win10Bean = (Win10) annotationConfigApplicationContext.getBean("org.example.spring5.domain.Win10");
        System.out.println(win10Bean);
    }
}

4. 输出结果

java
Bean 对象已装配完毕...
org.example.spring5.domain.Win10@fba92d3