Content

  • IOC反转控制
  • 基于XML的装配
    – Setter注入
    – 构造器注入
    –XML注入实现细节
    ---------属性值使用value子节点注入
    -------- value包含特殊字符
    ---------引用其他Bean(ref)
    ---------引用内部Bean
    ---------装配集合
    --------- 配置Properties属性值
    ---------配置单例的集合bean,以便多个bean调用
    --------- 通过P命名空间,配置bean属性
    –SpringEL(Spring 表达式语言)【动态赋值】
  • 基于注解方式的装配

IOC反转控制

传统的资源获取方式:组件向容器发送请求,容器返回资源
使用Spring获取资源方式:容器主动将资源注入到所在的组件当中。(DI 依赖注入)


基于XML的装配(XML区分大小写)

Setter注入

前提:

1.Bean必须有无参的构造器(无构造器时,系统会自动创建一个无参构造器)
2.必须提供一个setter方法

springboot factory bean 怎么动态替换 spring动态修改bean的属性_构造器

构造器注入

index 控制参数顺序

type控制具体参数类型(解决参数重载)

springboot factory bean 怎么动态替换 spring动态修改bean的属性_XML_02


springboot factory bean 怎么动态替换 spring动态修改bean的属性_属性值_03

XML注入实现细节



属性值使用value子节点注入

springboot factory bean 怎么动态替换 spring动态修改bean的属性_构造器_04

value包含特殊字符

springboot factory bean 怎么动态替换 spring动态修改bean的属性_属性值_05

引用其他Bean(ref)

springboot factory bean 怎么动态替换 spring动态修改bean的属性_构造器_06

springboot factory bean 怎么动态替换 spring动态修改bean的属性_属性值_07


springboot factory bean 怎么动态替换 spring动态修改bean的属性_构造器_08

引用内部Bean

springboot factory bean 怎么动态替换 spring动态修改bean的属性_属性值_09

装配集合

springboot factory bean 怎么动态替换 spring动态修改bean的属性_构造器_10

springboot factory bean 怎么动态替换 spring动态修改bean的属性_属性值_11

springboot factory bean 怎么动态替换 spring动态修改bean的属性_构造器_12

配置Properties属性值

springboot factory bean 怎么动态替换 spring动态修改bean的属性_XML_13


springboot factory bean 怎么动态替换 spring动态修改bean的属性_属性值_14

springboot factory bean 怎么动态替换 spring动态修改bean的属性_构造器_15

配置Map属性值

springboot factory bean 怎么动态替换 spring动态修改bean的属性_构造器_16


springboot factory bean 怎么动态替换 spring动态修改bean的属性_XML_17

springboot factory bean 怎么动态替换 spring动态修改bean的属性_构造器_18

配置单例的集合bean,以便多个bean调用

将已创建的bean组合起来,方便调用

【注:添加命名空间util】

springboot factory bean 怎么动态替换 spring动态修改bean的属性_XML_19

通过P命名空间,配置bean属性

springboot factory bean 怎么动态替换 spring动态修改bean的属性_属性值_20

SpringEL(Spring 表达式语言)

springboot factory bean 怎么动态替换 spring动态修改bean的属性_属性值_21

springboot factory bean 怎么动态替换 spring动态修改bean的属性_属性值_22

基于注解方式的装配

springboot factory bean 怎么动态替换 spring动态修改bean的属性_属性值_23

springboot factory bean 怎么动态替换 spring动态修改bean的属性_XML_24

springboot factory bean 怎么动态替换 spring动态修改bean的属性_属性值_25

springboot factory bean 怎么动态替换 spring动态修改bean的属性_XML_26


@Component

@Controller

@Service

@Repository

springboot factory bean 怎么动态替换 spring动态修改bean的属性_构造器_27

在类中设置上述注解,然后在xml中扫描包,就可以将含有注解的类加入到IOC容器中统一管理。

springboot factory bean 怎么动态替换 spring动态修改bean的属性_XML_28

@Autowired:bean之间的通信

通过注解将组件加入到IOC容器后,可用@Autowired实现不同bean之间属性,方法的调用。

如下:在USerService中定义UserRepositoryImpl字段,在UserController中定义UserService字段,最后实例化UserController,即可调用UserRepositoryImpl和UserService的方法。

springboot factory bean 怎么动态替换 spring动态修改bean的属性_XML_29


springboot factory bean 怎么动态替换 spring动态修改bean的属性_构造器_30

springboot factory bean 怎么动态替换 spring动态修改bean的属性_XML_31

@Autowired(required=false)允许其属性不被设置,默认要求被@Autowired注解的属性都需要被设置。

@Qualifier("")指定某一个具体的类。当IOC容器中存在多个bean兼容@Autowired时。
例:
@Autowired
@Qualifier(“userRepository”)