基于XML配置Bean和基于XML自动装配

目录

基于XML配置Bean

id分配规则

通过id获取bean

通过类型获取bean

通过C命名空间配置bean

使用C命名空间

通过P命名空间配置bean

通过util:list进行配置bean

指定id,直接ref引用过来

通过外部属性文件配置Bean

Bean信息重用(继承)

基于XML自动装配

byName

byType


基于XML配置Bean

private ConcurrentHashMap<String,Object> singletonObejcts = new ConcurrentHashMap();

xml中存放bean的唯一id、全路径以及属性信息

**反射创建对象,**默认会调用无参构造方法

将id和对象放入单例池 Map<String**(id)** ,Object**(bean)**>

解析xml配置文件就会创建xml里设置的所有对象

new ClassPathXmlApplicationContext("s1.xml",""s2.xml");可以写多个xml文件,可变长

不一定是自定义的bean,可以是系统存在的类,如Date

<bean id="birthBean" class="java.util.Date"/>

BeanFactory是ioc容器的顶级接口,负责创建Bean对象,是一个工厂

也可以用BeanFactory代替ApplicationContext

id分配规则

bean不带id,系统会默认分配id,分配id的规则是 全类名#0, 全类名#1

通过id获取bean

通过类型获取bean

要求ioc容器中的同一个类的bean只能有一个

**应用场景:**比如Servlet/Controller/Service 在一个线程中只需要一个对象实例(单例)的情况

通过C命名空间配置bean

不使用C命名空间

1. constructor-arg标签可以指定使用构造器的参数
2. index表示构造器的第几个参数 从0开始计算的
3. 除了可以通过index 还可以通过 name / type 来指定参数方式
4. 类的构造器,不能有完全相同类型和顺序的构造器,所以可以通过type来指定

使用C命名空间

构造器注入的一种快捷实现方式

必须存在有参构造器

可以不要get、set方法

通过P命名空间配置bean

set注入的一种快捷实现方式

必须存在set方法和无参构造器

可以不要有参构造器

通过util:list进行配置bean

必须存在set方法

指定id,直接ref引用过来

通过外部属性文件配置Bean

必须存在set方法

在resoureces目录下新建xx.properties

Bean信息重用(继承)

基于XML自动装配

自动装配:Spring会在上下文中自动查找,并自动给Bean装配与其相关的属性

在xml配置文件中的bean标签中加入一个属性autowire:一般是byName或byType

byName

通过名字完成自动装配(必须要有set方法)

1、找class对应实体类

2、看属性的setXxx方法中的Xxx,然后首字母小写xxx

3、在配置文件中查找 id=xxx 的Bean

byType

Spring会自动寻找一个与该属性类型相同的Bean,注入进来,保证类型中是唯一的Bean

相关推荐
lv__pf19 小时前
Spring配置类解析 【TL spring 11】
java·前端·spring
风流 少年20 小时前
Spring AI 2.0:Hello World
java·人工智能·spring
@卓越俊逸_角立杰出@1 天前
java实现Agent+ReAct demo(Spring Boot + Spring AI Alibaba ReAct Agent)
java·spring·react.js
不才不才不不才1 天前
Spring 源码系列(20): @SpringBootApplication 三注解拆解
java·后端·spring
少晓年2 天前
Spring Security OAuth2.0 自定义过滤器实践:从原理到实战
spring
盗理者2 天前
AI Agent 技能分享|SQL 性能诊断与优化
java·sql·spring·skill
月光有害2 天前
理解 Spring 依赖注入:从构造器注入到集合与条件 Bean
java·后端·spring
小当家.1052 天前
LLM服务缓存与连接池管理:三层缓存架构与ChatClient池化
java·后端·spring·缓存·llm·agent
小当家.1052 天前
Token成本控制实战:语义缓存、上下文压缩与工具缓存
java·spring·缓存·token·上下文
IT利刃出鞘2 天前
SpringBoot--解决@Valid放在接口的List上时无效的问题
java·spring