spring5 工厂bean

1.工厂bean

复制代码
package com.cj.spring5;

import org.springframework.beans.factory.FactoryBean;

public class MyBean implements FactoryBean<Course> {
    //定义返回的bean
    @Override
    public Course getObject() throws Exception {
        Course course = new Course("好看的书");
        return course;
    }

    @Override
    public Class<?> getObjectType() {
        return null;
    }

    @Override
    public boolean isSingleton() {
        return false;
    }
}
复制代码

 2.bean 的作用域

singleton 单例 获取xml文件时创建对象
prototype 多实例 getBean时创建对象

 3. bean 的生命周期

  1.执行无参构造创建bean实例

  2.set属性注入

  初始化之前

  3.初始化的方法

  初始化之后

  4.获取bean实例对象

  5.执行销毁的方法

复制代码
package com.cj.spring5;

public class Goods {
    private String name;
    public Goods(){
        System.out.println("1.无参构造");
    }

    public Goods(String name) {
        this.name = name;
    }

    public void setName(String name) {
        this.name = name;
        System.out.println("2.属性");
    }
    public void initMethod(){
        System.out.println("3.初始化");
    }
    public void destoryMethod(){
        System.out.println("5.销毁");
    }
}
复制代码
复制代码
public void test8(){
    //获取xml
    //ApplicationContext xml = new ClassPathXmlApplicationContext("bean4.xml");
    ClassPathXmlApplicationContext xml = new ClassPathXmlApplicationContext("bean4.xml");
    //获取对象
    Goods goods = xml.getBean("goods", Goods.class);
    System.out.println("4.获取bean实例");
    //调用
    xml.close();
    //System.out.println(goods.toString());
}
复制代码
 <bean id="goods" class="com.cj.spring5.Goods" init-method="initMethod" destroy-method="destoryMethod">
     <property name="name" value="鱼干"/>
 </bean>

3.1 后置处理器

<bean id="myBeanPost" class="com.cj.spring5.MyBeanPost"/>
复制代码
package com.cj.spring5;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.lang.Nullable;

public class MyBeanPost implements BeanPostProcessor {

    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("初始化之前");
        return null;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("初始化之后");
        return null;
    }
}
复制代码

 

posted @   写代码的小哥哥  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示