栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring IOC容器的理解(五)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring IOC容器的理解(五)

基于XML管理bean

实验十一 给bean的属性赋值:集合属性

实验十二 自动装配

实验十三 集合类型的bean

实验十四 FactoryBean机制

实验十五 bean的作用域

实验十六 bean的生命周期


实验十一 给bean的属性赋值:集合属性

1、给组件类添加属性

2、配置

3、测试

4、其他变化形式

实验十一 给bean的属性赋值:集合属性

1、给组件类添加属性

 

2、配置


    
        
            member01
            member02
            member03
        
    

3、测试
@Test
public void testExperiment13() {
    
    HappyTeam happyTeam2 = (HappyTeam) iocContainer.getBean("happyTeam2");
    
    List memberList = happyTeam2.getMemberList();
    
    for (String member : memberList) {
        System.out.println("member = " + member);
    }
    
}

4、其他变化形式


    
        
        
        
        
        
        
            member01
            member02
            member02
        
    
    
        
        
        
        
            张三2
            李四2
            王五2
        
    

实验十二 自动装配

1、声明组件类

2、配置

3、测试

实验十二 自动装配

1、声明组件类

其中HappyController需要用到HappyService。所谓自动装配就是一个组件需要其他组件时,由 IOC 容器负责找到那个需要的组件,并装配进去。

public class HappyController {
        
    private HappyService happyService;
    
    public HappyService getHappyService() {
        return happyService;
    }
    
    public void setHappyService(HappyService happyService) {
        this.happyService = happyService;
    }
}
public class HappyService {
}
2、配置






    
    
3、测试
@Test
public void testExperiment12() {
    HappyController happyController = iocContainer.getBean(HappyController.class);
    
    HappyService happyService = happyController.getHappyService();
    
    System.out.println("happyService = " + happyService);
}

实验十三 集合类型的bean

1、配置

2、测试

实验十三 集合类型的bean

1、配置


    
        
    
    
        
    
    
        
    

2、测试
@Test
public void testExperiment11() {
    List machineList = (List) iocContainer.getBean("machineList");
    for (HappyMachine happyMachine : machineList) {
        System.out.println("happyMachine = " + happyMachine);
    }
}

实验十四 FactoryBean机制

1、简介

2、实现FactoryBean接口

3、配置bean

4、测试获取bean

实验十四 FactoryBean机制

1、简介

FactoryBean是Spring提供的一种整合第三方框架的常用机制。和普通的bean不同,配置一个FactoryBean类型的bean,在获取bean的时候得到的并不是class属性中配置的这个类的对象,而是getObject()方法的返回值。通过这种机制,Spring可以帮我们把复杂组件创建的详细过程和繁琐细节都屏蔽起来,只把最简洁的使用界面展示给我们。

将来我们整合Mybatis时,Spring就是通过FactoryBean机制来帮我们创建SqlSessionFactory对象的。


​
package org.springframework.beans.factory;
​
import org.springframework.lang.Nullable;
​

public interface FactoryBean {
​
    
    String OBJECT_TYPE_ATTRIBUTE = "factoryBeanObjectType";
​
​
    
    @Nullable
    T getObject() throws Exception;
​
    
    @Nullable
    Class getObjectType();
​
    
    default boolean isSingleton() {
        return true;
    }
​
}

2、实现FactoryBean接口

3、配置bean

4、测试获取bean

实验十五 bean的作用域

1、概念

2、配置

3、测试

实验十五 bean的作用域

1、概念

在Spring中可以通过配置bean标签的scope属性来指定bean的作用域范围,各取值含义参加下表:

取值含义创建对象的时机
singleton在IOC容器中,这个bean的对象始终为单实例IOC容器初始化时
prototype这个bean在IOC容器中有多个实例获取bean时

如果是在WebApplicationContext环境下还会有另外两个作用域(但不常用):

取值含义
request在一个请求范围内有效
session在一个会话范围内有效

2、配置




    

3、测试
@Test
public void testExperiment15() {
    HappyMachine happyMachine01 = (HappyMachine) iocContainer.getBean("happyMachine4");
    HappyMachine happyMachine02 = (HappyMachine) iocContainer.getBean("happyMachine4");
    
    System.out.println(happyMachine01 == happyMachine02);
    
    System.out.println("happyMachine01.hashCode() = " + happyMachine01.hashCode());
    System.out.println("happyMachine02.hashCode() = " + happyMachine02.hashCode());
}

更新有点慢望谅解 多多点赞 互相关注

IOC容器理解中的 基于xml管理bean更新完了,后期会继续更新基于注解管理bean等等

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/825246.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号