通过@Import手动装配

  1. 创建配置类:HelloWordConfiguration,并添加@Configuration注解;
  2. 使用@Bean注解,定义一个名为“helloWorld”的Bean。

    1. @Configuration
    2. public class HelloWordConfiguration {
    3. @Bean
    4. public String helloWorld() {
    5. return "Hello World 2021";
    6. }
    7. }

    一、Import配置类

  3. 创建启动类HelloWorldBootstrap;

  4. 通过@Import(HelloWordConfiguration.class)装配Bean;

    1. @Import(HelloWordConfiguration.class)
    2. public class HelloWorldBootstrap {
    3. public static void main(String[] args) {
    4. ConfigurableApplicationContext context = new SpringApplicationBuilder(HelloWorldBootstrap.class)
    5. .web(WebApplicationType.NONE)
    6. .run(args);
    7. String helloWorld = context.getBean("helloWorld", String.class);
    8. System.out.println(helloWorld);
    9. context.close();
    10. }
    11. }
  5. 运行结果如下图: image.png

    二、自定义ImportSelector

  6. 实现HelloWorldImportSelector,在selectImports方法中返回HelloWordConfiguration的完全限定名;

    1. public class HelloWorldImportSelector implements ImportSelector {
    2. @Override
    3. public String[] selectImports(AnnotationMetadata importingClassMetadata) {
    4. return new String[]{"com.xxx.HelloWordConfiguration"};
    5. }
    6. }
  7. 创建启动类HelloWorldBootstrap;

  8. 通@Import(HelloWorldImportSelector.class)装配Bean;

    1. @Import(HelloWorldImportSelector.class)
    2. public class HelloWorldBootstrap {
    3. public static void main(String[] args) {
    4. ConfigurableApplicationContext context = new SpringApplicationBuilder(HelloWorldBootstrap.class)
    5. .web(WebApplicationType.NONE)
    6. .run(args);
    7. String helloWorld = context.getBean("helloWorld", String.class);
    8. System.out.println(helloWorld);
    9. context.close();
    10. }
    11. }
  9. 运行结果如下图: image.png