简述spring框架中的IOC和DI

Hello World!
IOC和DI可以说是相同的,但有些资料记载把它们进行了细的划分。
IOC(控制反转) 它是将创建的对象的权限交由给spring容器,由它统一创建统一分配。
DI(依赖注入) 它就是在IOC创建好对象之后,为这个对象注入各个属性,这个过程就是依赖注入。
1.创建对象

  • 有参构造

  • 无参构造

  • 静态方法创建对象

    public class PersonFactory {
    public static Person createPerson(){
    System.out.println(“静态工厂创建Person”);
    return new Person();
    }
    }

  • 非静态方法创建对象

     - public class Users{
       public  Person createPerson1(){
        System.out.println("非静态工厂创建Person");
        return new Person();
       }
    }
    
    
    

2.DI注入
1> 可以通过name属性,按照参数名赋值

  public  Person(String  name , Car car){
        this.name = name;
        this.car = car;
        System.out.println("Person的有参构造方法:"+name+car);
     }    
           
               

2> 可以通过index属性,按照参数索引注入

   > 
    >         
    >          

3> 使用type注入

       public Person(Car car, String name) {
            super();
            System.out.println("Person(Car car, String name)");
           this.name = name;
           this.car = car;
        }


public Person(Car car, Integer name) {
    super();
    System.out.println("Person(Car car, Integer name)");
    this.name = name + "";
    this.car = car;
}


    
    

4> spel spring表达式

 
           
              


 
            
            

   

5>复杂注入

   
       
           
               数组1
               
               
           
       

       
       
            
                集合1
                
                
                    集合中的集合1
                    集合中的集合2
                    集合中的集合3
                
                
            
       

       
       
           
               
               
               
           

       

       
       
            
                pro1
                111
            
       

6> 自动注入(由程序自动给属性赋值)
autowire:
no 不自动装配(默认值)
byName 属性名=id名 ,调取set方法赋值
byType 属性的类型和id对象的类型相同,当找到多个同类型的对象时报错,调取set方法赋值
constructor 构造方法的参数类型和id对象的类型相同,当没有找到时,报错。调取构造方法赋值
示例:

 
 

配置全局自动装配:

你可能感兴趣的:(简述spring框架中的IOC和DI)