Heim > Java > javaLernprogramm > Hauptteil

Beispielanalyse des Java Spring Bean-Lebenszyklusmanagements

王林
Freigeben: 2023-04-18 09:13:44
nach vorne
1457 Leute haben es durchsucht

    Lebenszyklusmanagement von Frühlingsbohnen

    1. Lebenszyklus von Frühlingsbohnen

    # 🎜🎜 #Beispielanalyse des Java Spring Bean-Lebenszyklusmanagements

    通过以下方式来指定Bean的初始化和销毁方法,
    当Bean为单例时,Bean归Spring容器管理,Spring容器关闭,就会调用Bean的销毁方法
    当Bean为多例时,Bean不归Spring容器管理,Spring容器关闭,不会调用Bean的销毁方法
    Nach dem Login kopieren

    2. Geben Sie die Initialisierungs- und Zerstörungsmethoden der Bean über @Bean-Parameter an (initMethod, destroyMethod)

    1 Projektstruktur
    #🎜🎜 #

    Beispielanalyse des Java Spring Bean-Lebenszyklusmanagements2, Person

    public class Person {
        public Person(){
            System.out.println("Person 创建了...");
        }
        public void init(){
            System.out.println("Person 初始化了...");
        }
        public void destroy(){
            System.out.println("Person 被销毁了...");
        }
    }
    Nach dem Login kopieren
    3, Bean-Registrierungskonfigurationsklasse (einzelne Instanz)
    import com.dashu.bean.Person;
    import org.springframework.context.annotation.*;
    @Configuration
    public class BeanConfig {
        @Bean(initMethod = "init",destroyMethod = "destroy")
        public Person person(){
            return new Person();
        }
    }
    Nach dem Login kopieren
    4, Testklasse#🎜 🎜 #
    import com.dashu.bean.Person;
    import com.dashu.config.BeanConfig;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    public class Main {
        public static void main(String[] args) {
            //加载配置类获取容器
            AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(BeanConfig.class);
            //获取Bean
            Person bean = annotationConfigApplicationContext.getBean(Person.class);
            //关闭容器
            annotationConfigApplicationContext.close();
        }
    }
    Nach dem Login kopieren
    5. Testergebnisse
    6. Bean-Registrierungskonfigurationsklasse (mehrere Instanzen)

    import com.dashu.bean.Person;
    import org.springframework.context.annotation.*;
    @Configuration
    public class BeanConfig {
        @Scope("prototype")
        @Bean(initMethod = "init",destroyMethod = "destroy")
        public Person person(){
            return new Person();
        }
    }
    Nach dem Login kopieren
    Beispielanalyse des Java Spring Bean-Lebenszyklusmanagements 7 . Testergebnisse

    3. Bean-Implementierungsschnittstelle InitializingBean, EinwegBean

    Beispielanalyse des Java Spring Bean-Lebenszyklusmanagements1, Person

    import org.springframework.beans.factory.DisposableBean;
    import org.springframework.beans.factory.InitializingBean;
    public class Person implements InitializingBean, DisposableBean {
        public Person(){
            System.out.println("Person 创建了...");
        }
        @Override
        public void afterPropertiesSet() throws Exception {
            System.out.println("Person 初始化了...");
        }
        @Override
        public void destroy() throws Exception {
            System.out.println("Person 被销毁了...");
        }
    }
    Nach dem Login kopieren
    #🎜 🎜 #2. Bean-Registrierungskonfigurationsklasse

    import com.dashu.bean.Person;
    import org.springframework.context.annotation.*;
    @Configuration
    public class BeanConfig {
        @Bean
        public Person person(){
            return new Person();
        }
    }
    Nach dem Login kopieren

    3. Testergebnisse
    4. Durch die Anmerkungen @PostConstruct und @PreDestroy
    @PostConstruct:标注在Bean的初始化方法上
    @PreDestroy:标注在Bean的销毁方法上
    Nach dem Login kopieren
    1, Person

    import javax.annotation.PostConstruct;
    import javax.annotation.PreDestroy;
    public class Person {
        public Person(){
            System.out.println("Person 创建了...");
        }
        @PostConstruct
        public void init(){
            System.out.println("Person 初始化了...");
        }
        @PreDestroy
        public void destroy(){
            System.out.println("Person 被销毁了...");
        }
    }
    Nach dem Login kopieren
    Beispielanalyse des Java Spring Bean-Lebenszyklusmanagements2, Testergebnisse

    5. Verwenden Sie die Schnittstelle BeanPostProcessor-Implementierungsklasse (Postprozessor)
    1, Projektstruktur

    Beispielanalyse des Java Spring Bean-Lebenszyklusmanagements

    2, Person
    import org.springframework.stereotype.Component;
    import javax.annotation.PostConstruct;
    import javax.annotation.PreDestroy;
    @Component
    public class Person {
        public Person(){
            System.out.println("Person 创建了...");
        }
        @PostConstruct
        public void init(){
            System.out.println("Person 初始化了...");
        }
        @PreDestroy
        public void destroy(){
            System.out.println("Person 被销毁了...");
        }
    }
    Nach dem Login kopieren
    #🎜 🎜#3. Bean-Registrierungskonfigurationsklasse
    import org.springframework.context.annotation.*;
    @Configuration
    @ComponentScan({"com.dashu"})
    public class BeanConfig {
    }
    Nach dem Login kopieren

    4. BeanPostProcessor-Implementierungsklasse (Postprozessor)Beispielanalyse des Java Spring Bean-Lebenszyklusmanagements

    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.config.BeanPostProcessor;
    import org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor;
    import org.springframework.lang.Nullable;
    import org.springframework.stereotype.Component;
    /**
     * 后置处理器:初始化前后进行处理工作
     */
    @Component
    public class MyBeanPostProcessor implements BeanPostProcessor {
        /**
         * 初始化之前工作
         * @param bean
         * @param beanName
         * @return
         * @throws BeansException
         */
        @Override
        public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
            System.out.println("初始化之前..."+beanName+"=["+bean+"]");
            return bean;
        }
        /**
         * 初始化之后工作
         * @param bean
         * @param beanName
         * @return
         * @throws BeansException
         */
        @Override
        public  Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
            System.out.println("初始化之后..."+beanName+"=["+bean+"]");
            return bean;
        }
    }
    Nach dem Login kopieren

    5. Testergebnisse
    # 🎜 🎜#

    Das obige ist der detaillierte Inhalt vonBeispielanalyse des Java Spring Bean-Lebenszyklusmanagements. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:yisu.com
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage