Spring-Ioc-DI的三种注入方式:

一、Ioc与DI分别指什么?

Ioc控制反转:依赖spring对象工厂完成对象的创建

DI依赖注入:在Spring完成对象创建的同时依赖Spring容器完成对象属性的赋值

1.1 Ioc:

当我们需要通过Spring对象创建某个类的对象的时候,需要将这个交给Spring管理----通过标签

1.2 DI :

通过Spring容器给创建的对象属性赋值

1.3 Spring-Ioc-DI的三种方式:

Spring容器加载配置文件后,通过反射创建的对象,并给属性赋值。Spring容器通过反射实现属性的注入有以下三种方式:

  • 通过Setter()方法注入
  • 通过构造器注入
  • 通过接口注入

二. Spring-Ioc-DI Setter()注入 :

2.1 简单类型及字符串:

        在标签中配置标签给对象标签赋值,实际上就是通过反射调用Setter()方法,简单类型及字符串类型,直接通过标签中的value属性直接赋值即可;




    
        
        
        
        
  
    

2.2 日期类型(Date):

        Date类型有两种属性值注入方式;第一种:在标签中通过ref属性引用Spring容器中的一个对象



    
    
        
        
        
        
        
    

第二种方式:则是通过标签中配置标签给Date类型的enterenceTime(入学日期)赋值;




    
        
        
        
        
        
            
        
    
    

2.3 自定义对象类型:

  • 方式一:通过标签的ref属性方法进行引入
  • 方式二:在双标签中添加标签




    

    
        
        
        
        
        
            
        
        
        
        
        
            
        
    

2.4 集合类型List、Set、Map

        在Student实体类中添加List hobbies; Set sets;  Map mapps集合属性,生成对应的Setter()方法,并重写ToString()方法

2.4.1 List<>集合

         类型一:如果List<简单类型或字符串> ,直接通过标签中的value进行赋值;

 
        

        类型二:如果List<对象>,List元素是对象类型,需要通过子标签进行赋值


        
            
                
                
            
        

         类型二中的也可以使用 引用定义好的Book类型;




    
    
        
        
            
                
                
                
                
            
        
    

2.4.2  Set<>集合:

        类型一:set<简单类型或字符串>,直接通过标签中的value进行赋值;

 

        类型二: 如果set<对象>,set元素是对象类型,需要通过子标签进行赋值;

 
        
            
                
                
            
        

           类型二中的也可以使用 引用定义好的ClassRoom类型;




    
   
        
        
            
              
                
            
        
    

小结:Set<>和List<>集合的注入方式相同使用方式基本一致,唯一不同的就是将标签改成,反之亦然~

2.4.3 Map类型--键值对 :

        Map类型是键值对类型的,在为对象赋值的时候需要在标签中使用子标签,而子标签中需要使用标签,在标签中分别有子标签,在其中分别设置键值对即可;具体操作如下;




        
        
            
                
                    
                        key1
                    
                    k1
                
            
        
    

三. Spring-Ioc-DI 构造器注入 :

3.1 简单类型及字符串:

        常规类型包括了简单类型、字符串、对象三大部分,标签其实就是调用对象的无参构造方法的过程,所以如果没有无参构造器,在配置时不赋值会报错;赋值时要和构造方法的属性顺序保持一致,也可以使用index索引(本示例中使用的是index索引)





    
    
    

    
        
        
        
        
        
        
    

        如果在给自定义对象类型赋值时,不使用ref属性可以在标签中添加子标签;


            
        

3.2 集合类型List、Set、Map:

        集合类型List、Set、Map构造器注入方式与Setter()的注入方式,有异曲同工之妙,注入方式大差不差,具体如下;




    
    
    
    
        
        
        
        
        
        
            
        


        

        
        
            
                11
                22
            
        

        
        
            
                33
                44
            
        


        
        
            
                
                    key3
                    k33
                
                
                    key4
                    k44
                
            
        
    

          第三种注入方式是接口,但是在我们日常使用中基本上不使用,而以上两种使用的较为广泛,所以在此进行了详细的描述,希望有助于大家,Thanks♪(・ω・)ノ浏览~~~~

你可能感兴趣的:(Spring框架,intellij-idea,java,jar,tomcat,spring)