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

Spring四种三类依赖注入方式详解

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

Spring四种三类依赖注入方式详解

  了解过设计模式的人都知道一个非常经典的设计模式——工厂设计模式。即所有的对象创建工作都交给工厂完成,是一个典型的面向接口编程模式。它比直接new来创建对象更为合理,如果直接new创建对象,会导致调用者与被调用者的硬编码耦合;而工厂模式将用户创建的责任转给了工厂,形成了调用者与被调用者的接口耦合。这样的工厂模式确实比原始的创建对象方式好很多。但,正如之前所说的,工厂模式仅是将责任推给了工厂,它造成了调用者与被调用者工厂的耦合。
  Spring框架则避免了调用者与工厂之间的耦合,通过Spring容器的“宏观调控”,调用者只需要被动地接收Spring为调用者的成员赋值即可,不需要主动获取被依赖对象。这种被动获取方式就叫做“依赖注入”当然,也应用了IOC(控制反转)思想。
  依赖注入,说白了便是创建Bean对象。在学习如何注入前,先看一个例子,以便于更好理解Bean:


    

Spring依赖注入共分为三类四种:

1. Set注入【重点】

  依赖注入的本质便是Set注入。

  • 依赖:bean对象的创建依赖于容器
  • 注入:bean对象中的所有属性由容器来注入

【环境搭建】

  1. 创建复杂引用类型对象
public class Address {
	private String address;
		
	public String getAddress() {
		return address;
	}
		
	public void setAddress(String address) {
		this.address = address;
	}
}

  1. 创建真实测试对象
public class Student {
    private String name;
    private Address address;
    private String[] books;
    private List hobbies;
    private Map card;
    private Set games;
    private String wife;
    private Properties info;
}
  1. 配置Beans.xml文件



    
        
           
            
        
    

  1. 测试类
public static void main(String[] args) {
    ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
    Student bean = (Student) context.getBean("Student");
		
    System.out.println(bean.getName());
}
  1. 完善注入信息



    
        
    
		
    
        
            
            
		
            
            
		
            
            
                
                    三国演义
                    红楼梦
                    水浒传
                    西游记
                
            
		
            
            
                
                    听歌
                   打游戏
                    看书
                
            
		
            
            
                
                    
                    
                
            
		
            
            
                
                    LOL
                    COC
                    EVE
                
            
		
            

            
            
                
                

            
		
            
            
                
                    2013101043
                    
                    User
                    123456
                
            
        
    

  

2. 构造器注入

a. 使用无参方式创建对象(默认创建方式)
b. 使用有参方式创建对象

    (1)下标赋值

		
	   		
			
		

    (2)类型赋值(不建议使用)

		
			
		

    (3)参数名赋值(最常用)

		
			
		    
		

构造器注入并不是最完美的注入方案,可能出现依赖循环的问题。
  

3. 利用c或p命名空间注入

除了上述两种注入方式外,还可以使用命名空间注入。
官方解释:

c和p命名空间并不能直接使用,在使用前需要提前导入XML约束。

   xmlns:p="http://www.springframework.org/schema/p"
   xmlns:c="http://www.springframework.org/schema/c"

注入实例



	
    
    

    
    

测试类

@Test
public void test2() {
    ApplicationContext context = new ClassPathXmlApplicationContext("userbeans.xml");
	
    User user = context.getBean("user", User.class);    //显式声明数据类型后可不进行强转
    System.out.println(user);
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/584462.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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