<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--    bean的生命周期五步版本:实例化,赋值,初始化,使用,销毁-->
<!--    bean的生命周期七步版本:实例化,赋值,bean后处理器before方法,初始化,bean后处理器after方法,使用,销毁-->
<!--    bean的生命周期十步版本:实例化,赋值,检查是否有aware接口,bean后处理器before方法,检查是否实现了InitializingBean接口-->
<!--    初始化,执行Bean后处理器after方法,使用Bean,检查Bean是否实现了DisposableBean接口,销毁Bean-->
<!--    aware接口调用后就可以通过传递的classLoader和beanFactory和beanName实现一些内容-->
    <bean id="user" class="com.powernode.spring6.bean.User" init-method="initUser" destroy-method="destroyUser">
        <property name="name" value="Jack"/>
    </bean>
    <bean class="com.powernode.spring6.bean.LogBeanPostProcessor"/>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--    bean的生命周期五步版本:实例化,赋值,初始化,使用,销毁-->
<!--    bean的生命周期七步版本:实例化,赋值,bean后处理器before方法,初始化,bean后处理器after方法,使用,销毁-->
<!--    bean的生命周期十步版本:实例化,赋值,检查是否有aware接口,bean后处理器before方法,检查是否实现了InitializingBean接口-->
<!--    初始化,执行Bean后处理器after方法,使用Bean,检查Bean是否实现了DisposableBean接口,销毁Bean-->
<!--    aware接口调用后就可以通过传递的classLoader和beanFactory和beanName实现一些内容-->
    <bean id="user" class="com.powernode.spring6.bean.User" init-method="initUser" destroy-method="destroyUser">
        <property name="name" value="Jack"/>
    </bean>
    <bean class="com.powernode.spring6.bean.LogBeanPostProcessor"/>
</beans>
package com.powernode.spring6.bean;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.*;

public class User implements BeanNameAware, BeanClassLoaderAware, BeanFactoryAware, InitializingBean,DisposableBean
{
    private static final Logger logger = LoggerFactory.getLogger(User.class);
    private String name;
    public User()
    {
        logger.info("空参构造器实例化");
    }

    public void setName(String name)
    {
        logger.info("赋值");
        this.name = name;
    }
    public void initUser()
    {
        logger.info("初始化");
    }
    public void destroyUser()
    {
        logger.info("销毁");
    }

    @Override
    public void setBeanClassLoader(ClassLoader classLoader)
    {
        //ClassLoader的方法
        logger.info("bean的类加载器是" + classLoader);
    }

    @Override
    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
        logger.info("bean的工厂是" + beanFactory);
    }

    @Override
    public void setBeanName(String name) {
        //在这里使用Bean的名字
        logger.info("bean的名字是" + name);
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        logger.info("initializingBean的afterPropertiesSet方法执行");
    }

    @Override
    public void destroy() throws Exception {
        logger.info("DisposableBean的destroy方法执行");
    }
}
package com.powernode.spring6.bean;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.*;

public class User implements BeanNameAware, BeanClassLoaderAware, BeanFactoryAware, InitializingBean,DisposableBean
{
    private static final Logger logger = LoggerFactory.getLogger(User.class);
    private String name;
    public User()
    {
        logger.info("空参构造器实例化");
    }

    public void setName(String name)
    {
        logger.info("赋值");
        this.name = name;
    }
    public void initUser()
    {
        logger.info("初始化");
    }
    public void destroyUser()
    {
        logger.info("销毁");
    }

    @Override
    public void setBeanClassLoader(ClassLoader classLoader)
    {
        //ClassLoader的方法
        logger.info("bean的类加载器是" + classLoader);
    }

    @Override
    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
        logger.info("bean的工厂是" + beanFactory);
    }

    @Override
    public void setBeanName(String name) {
        //在这里使用Bean的名字
        logger.info("bean的名字是" + name);
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        logger.info("initializingBean的afterPropertiesSet方法执行");
    }

    @Override
    public void destroy() throws Exception {
        logger.info("DisposableBean的destroy方法执行");
    }
}
package com.powernode.spring6.test;

import com.powernode.spring6.bean.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test
{
    @org.junit.Test
    public void TestBeanInitiation()
    {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
        User user = applicationContext.getBean("user",User.class);
        System.out.println(user);
        ClassPathXmlApplicationContext classPathXmlApplicationContext = (ClassPathXmlApplicationContext) applicationContext;
        classPathXmlApplicationContext.close();
    }
}
package com.powernode.spring6.test;

import com.powernode.spring6.bean.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test
{
    @org.junit.Test
    public void TestBeanInitiation()
    {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
        User user = applicationContext.getBean("user",User.class);
        System.out.println(user);
        ClassPathXmlApplicationContext classPathXmlApplicationContext = (ClassPathXmlApplicationContext) applicationContext;
        classPathXmlApplicationContext.close();
    }
}
Logo

长江两岸老火锅,共聚山城开发者!We Want You!

更多推荐