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

相关推荐
蜡台2 分钟前
Vue3 props ref router 数据通讯传输等使用记录
前端·javascript·vue.js·vue3·router·ref
red_redemption5 分钟前
自由学习记录(157)
学习·pyenv管理python
艾莉丝努力练剑10 分钟前
【Linux线程】Linux系统多线程(三):Linux线程 VS 进程,线程控制
java·linux·运维·服务器·c++·学习·ubuntu
徒 花12 分钟前
Python知识学习07
windows·python·学习
鬼先生_sir12 分钟前
SpringCloud-openFeign(服务调用)
后端·spring·spring cloud
浮芷.18 分钟前
Flutter 框架跨平台鸿蒙开发 - 急救指南应用
学习·flutter·华为·harmonyos·鸿蒙
叫我一声阿雷吧20 分钟前
JS 入门通关手册(42):Promise 并发控制(all/race/allSettled/any 手写 + 实战)
javascript·promise·并发控制·promise.all·js异步编程·promise.race·手写promise
mfxcyh22 分钟前
实现签名画板
前端·javascript·vue.js
是大强22 分钟前
electron调用dll 方案
前端·javascript·electron
嵌入式×边缘AI:打怪升级日志28 分钟前
Linux 常用命令学习笔记(续):查找、压缩、vi 编辑器与其他命令
linux·笔记·学习