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; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现