Spring—Bean工厂进一步学习

基于xml的spring应用

XML配置方式: 功能描述:

bean的id和全限定名配置

通过name设置bean的别名,通过别名也能直接获取到bean实例

bean的作用范围

bean的实例化时机,是否延迟加载

bean实例化后自动执行的初识方法,method指定方法

bean实例销毁前的方法

设置自动注入模式

<bean factory-bean="factory-method=""/"> 指定工厂完成bean的创建。

小细节:

当为配置的时候,getBean("");中,得到的会是权限名。

name为别名

scope的类型有两种:prototype和singleton

其中,singleton为默认,当spring容器刚开始创建时,就已经进行了bean的实例化

prototype为创建时,不会进行bean的实例化,但每次使用getbean方法方法时,就进行一次bean的实例化。

singleton实例:

com.zzz.service.impl.UserServiceImpl@7b227d8d

com.zzz.service.impl.UserServiceImpl@7b227d8d

com.zzz.service.impl.UserServiceImpl@7b227d8d

prototype实例:

com.zzz.service.impl.UserServiceImpl@7b227d8d

com.zzz.service.impl.UserServiceImpl@7219ec67

com.zzz.service.impl.UserServiceImpl@45018215

创建对象后,创建初始化方法,在创建实例前首先执行需要的方法,有两种途径实现目的:

1.创建init-method初始化方法

2.实现接口InitializingBean,并且实现afterPropertiesSet方法

Spring实例化方式,也就是Spring创建bean的方式:

构造方式实例化:底层通过构造方法对bean进行实例化

工厂化方式实例化:底层通过调用自定义的工厂方法对bean进行实例化。

实例化的方式-构造方法方式:

public UserServiceImpl(String name){

System.out.println("UserService有参构造");

}

public UserServiceImpl(){

System.out.println("UserService无参构造");

}

实例化时,默认为无参构造优先,需要配置有参构造时,需要配置aplicationContext.xml文件

就会优先优先输出有参构造方法。

注意:constructor-arg为构造参数,但是注意构造参数不仅是构造方法的参数,只要需要传参数时,都可以使用constructor-arg标签进行传输。

工厂化实例bean,又分为以下三种:

1.静态工厂方法实例化bean

2.实例工厂方法实例化bean

3.实现factoryBean规范延迟实例化bean

相关推荐
ZC跨境爬虫几秒前
跟着 MDN 学JavaScript day_7:数学运算与逻辑判断实战测试
开发语言·前端·javascript·学习·ecmascript
凌云拓界25 分钟前
文件管理:让AI安全操作你的电脑 ——CogitoAgent开发实战(三)
javascript·人工智能·架构·开源·node.js
云烟成雨TD35 分钟前
Spring AI 1.x 系列【51】可观测性技术选型
java·人工智能·spring
unicrom_深圳市由你创科技43 分钟前
基于Spring AI框架的RAG应用
人工智能·spring·机器学习
凌云拓界1 小时前
联网能力:让AI看见更广阔的世界 ——CogitoAgent开发实战(四)
javascript·人工智能·架构·node.js·创业创新
HYCS2 小时前
用pixi.js实现fabric.js(六):从线性代数的角度理解编辑器交互
前端·javascript·canvas
七老板的blog2 小时前
当 Spring StateMachine 遇见大模型:构建工业级 AI 写作流水线
java·人工智能·spring
MartinYeung53 小时前
[论文学习]隐私保护联邦特徵选择与差分隐私的的工程实践框架
学习
you45803 小时前
学成在线--day02 CMS前端开发(含Vue基础知识得回顾)
前端·javascript·vue.js
想吃火锅10053 小时前
【leetcode】1.两数之和js版
javascript·算法·leetcode