SpringBoot:请教@PostConstruct为什么会被执行两次

图片描述

Boss.java

@Configuration
public class Boss {
    @PostConstruct
    public void init() {
        System.out.println("Creating Boss.");
    }

    @Bean
    public Boss getBoss() {
        return new Boss();
    }
}

SampleController.java

@Controller
@EnableAutoConfiguration
public class SampleController {
    @RequestMapping("/")
    @ResponseBody
    String home() {
        @SuppressWarnings("resource")
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(Boss.class);
        return "Hello World";
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(SampleController.class, args);
    }
}

为何通过AnnotationConfigApplicationContext加载后@PostConstruct修饰的方法会被执行两次

访问http://localhost:8080/连续输出
Creating Boss.
Creating Boss.

阅读 4k
评论
    1 个回答
    • 645

    @Configuration会创建一个Bean实例;
    @Bean会再创建一个Bean实例;
    所以就导致创建了两个对象,故@PostConstruct被执行了两次。

      撰写回答

      登录后参与交流、获取后续更新提醒