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.

阅读 7.7k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏