七、【生命周期】注解@Bean

@Bean(initMethod = "init", destroyMethod = "destroy")方式

Bean实体

@Getter
@Setter
@ToString
@AllArgsConstructor
public class Person {

    private String name;

    private Integer age;

    public Person() {
        System.out.println("person no args constructor process");
    }

    public void init () {
        System.out.println("person init method process");
    }

    public void destroy () {
        System.out.println("person destroy method process");
    }
}

配置类

@Configuration
public class PersonConfig {

    /**
     * 对于单实例Bean
     *      构造方法:在容器初始化过程中,且未赋值的时候执行
     *      init方法:在赋值完成之后执行
     *      destroy方法:在容器关闭的时候执行
     *
     * 对于多实例Bean
     *      在获取Bean的时候才会执行构造方法和init方法
     *      而不会管理destroy方法
     */
    // @Scope("prototype")
    @Bean(initMethod = "init", destroyMethod = "destroy")
    public Person person() {
        return new Person("张三", 13);
    }

}

测试类

public class MainTest {

    @Test
    public void m1() {
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(PersonConfig.class);
        System.out.println("······容器初始化完成······");
        Person person = applicationContext.getBean(Person.class);
        applicationContext.close();
    }

}
原文地址:https://www.cnblogs.com/zhangjianbing/p/13722299.html