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

IOC学习笔记Ⅰ

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

IOC学习笔记Ⅰ

系列文章目录
IOC学习笔记Ⅱ


目录
  • 一、概念
  • 二、IOC应用
    • 1.bean的基本配置
    • 2.依赖注入
    • 3.字面值
    • 4.引用其他bean
    • 5.注入Null值
    • 6.注入级联属性
    • 7.注入集合
    • 8.util&p标签
  • 总结


一、概念

IOC(Inversion of Control):使用对象时,由主动new产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转。
DI(Dependency Injection)——IOC 的另一种表述方式:组件以一些预先定义好的方式 (例如: setter 方法)接受来自于容器的资源注入,在容器中建立bean与bean之间的依赖关系的整个过程。

二、IOC应用 1.bean的基本配置

基础配置:
①id 属性:bean 的名称,在 IOC 容器中,bean 的名称必须是唯一的。
②如果没有指定 id 属性,那么将会用 class 属性作为 bean 的名称。
③Class 属性:类的全名称(包名+类名)

    
        
        
    

从IOC容器获取Bean:
调用 ApplicationContext 的 getBean() 方法
getBean()方法的参数:
String:根据配置文件中的 ID 属性来获取 bean
Class:根据对象的类型来获取 bean
注意:如果只指定要返回的 Bean 的类型就想从 IOC 容器中取得 Bean 的前提是该类型的 Bean 在 IOC 容器中只有一个

      ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
      获取bean
      BookDao bookDao = (BookDao) ctx.getBean("bookDao");
      System.out.println(bookDao.getConnectionNum());
2.依赖注入

①通过属性注入(setter注入):
属性注入使用< property > 元素, 使用 name 属性指定 Bean 的属性名称,value 属性 或 < value > 子节点指定属性值。属性注入是实际应用中最常用的注入方式

    
        
        
    

②构造方法注入

public class BookDaoImpl implements BookDao{
    private int connectionNum;
    private String databaseName;

    public BookDaoImpl(int connectionNum, String databaseName) {
        this.connectionNum = connectionNum;
        this.databaseName = databaseName;
    }

    @Override
    public void save() {
        System.out.println("book dao save ..." + databaseName + "," + connectionNum);
    }

}
    
        
        
    

选择:
1.强制依赖使用构造器进行,使用setter注入有概率不进行注入导致null对象出现
强制依赖指对象在创建的过程中必须要注入指定的参数
2…可选依赖使用setter注入进行,灵活性强
可选依赖指对象在创建过程中注入的参数可有可无
3.Spring框架倡导使用构造器,第三方框架内部大多数采用构造器注入的形式进行数据初始化,相对严谨
4.如果有必要可以两者同时使用,使用构造器注入完成强制依赖的注入,使用setter注入完成可选依赖的注入
5.实际开发过程中还要根据实际情况分析,如果受控对象没有提供setter方法就必须使用构造器注入
6.自己开发的模块推荐使用setter注入

3.字面值

字面值:可用字符串表示的值,可以通过 元素标签或 value 属性进行注入。 基本数据类型及其封装类、String 等类型都可以采取字面值注入的方式 若字面值中包含特殊字符,可以使用 把字面值包裹起来。例:< mysql >

    
        
            ]]>
        
        
    
4.引用其他bean

组成应用程序的 Bean 经常需要相互协作以完成应用程序的功能. 要使 Bean 能够相 互访问, 就必须在 Bean 配置文件中指定对 Bean 的引用 在 Bean 的配置文件中, 可以通过 元素或 ref 属性为 Bean 的属性或构造器 参数指定对 Bean 的引用。

    
        
        
    
5.注入Null值

不能直接value=“null”

  
6.注入级联属性

注意:Spring 为级联属性赋值之前必须先初始化对象,否则会出现异常。

     
    
         
     
    
    
         
    
     
     

注入级联属性后 IOC容器中car对象的price也会被随之改变

7.注入集合
 
        
        
            
                100
                200
                300
            
        
        
        
            
                itcast
                itheima
                boxuegu
                chuanzhihui
            
        
        
        
            
                itcast
                itheima
                boxuegu
                boxuegu
            
        
        
        
            
                
                
                
            
        
        
        
            
                china
                henan
                kaifeng
            
        
    
8.util&p标签
//引入命名空间
xmlns:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
    
        
    
    
    

总结

对Spring进行了一个基础的入门,学习了IOC容器和DI依赖注入。

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

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

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