SpringBoot 的 @Import 用于将指定的类实例注入之Spring IOC Container中。
A.java(无任何属性和实现)
public class A {
}
B.java(无任何属性和实现)
public class B {
}
ImportDirect.java
import com.example.demo.model.A;
import com.example.demo.model.B;
import org.springframework.context.annotation.Import;
import org.springframework.stereotype.Component;
@Component
@Import({A.class, B.class})
public class ImportDirect {
}
代码解读:使用@Import({A.class, B.class})后 A和 B类的实例将会被注入之Spring IOC Container中
DemoApplication.java 启动类
import com.example.demo.model.A;
import com.example.demo.model.B;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(DemoApplication.class, args);
System.out.println(applicationContext.getBean(ImportDirect.class));
System.out.println(applicationContext.getBean(A.class));
System.out.println(applicationContext.getBean(B.class));
}
}
启动SpringBoot查看控制台执行情况
或者另一种方法,使用注解
自定义注解@EnableAB
import com.example.demo.model.A;
import com.example.demo.model.B;
import org.springframework.context.annotation.Import;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Import({A.class, B.class})
public @interface EnableAB {
}
DemoApplication.java 启动类
import com.example.demo.model.A;
import com.example.demo.model.B;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@EnableAB
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(DemoApplication.class, args);
System.out.println(applicationContext.getBean(A.class));
System.out.println(applicationContext.getBean(B.class));
}
}
启动SpringBoot查看控制台执行情况