zoukankan      html  css  js  c++  java
  • 从头认识Spring-2.3 注解装配-@autowired(4)-required(2)

    这一章节我们来继续具体讨论一下@autowired里面的參数required。在多构造器注入的情况。

    1.domain(重点)

    蛋糕类:

    package com.raylee.my_new_spring.my_new_spring.ch02.topic_1_10;
    
    public class Cake {
    
    	private String name = "";
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    }
    

    厨师类:

    package com.raylee.my_new_spring.my_new_spring.ch02.topic_1_10;
    
    import org.springframework.beans.factory.annotation.Autowired;
    
    public class Chief {
    	private Cake cake = null;
    
    	private Oven oven = null;
    
    	@Autowired(required = false)
    	public Chief(Cake cake) {
    		this.cake = cake;
    	}
    
    	@Autowired(required = false)
    	public Chief(Cake cake, Oven oven) {
    		this.cake = cake;
    		this.oven = oven;
    	}
    
    	private String name = "";
    
    	public String getName() {
    		return name;
    	}
    
    	public Cake makeOneCake() {
    		if (cake != null) {
    			System.out.println(getName() + " use " + oven.getName() + " and make " + cake.getName());
    		} else {
    			System.out.println("null");
    		}
    		return cake;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    }
    

    厨师类这里须要注意的是,当出现多构造器注入的情况,尽管我们都能够使用@autowired标签。可是须要把required都弄成是false,不然抛异常

    还有的是,当出现多构造器注入时。注入成功的是注入对象最多的那个构造器,也就是上面有两个參数的那个


    烤炉类:(又一次引入)

    package com.raylee.my_new_spring.my_new_spring.ch02.topic_1_10;
    
    public class Oven {
    	private String name = "";
    
    	@Override
    	public String toString() {
    		return name;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    }
    


    2.測试类:(不变)

    package com.raylee.my_new_spring.my_new_spring.ch02.topic_1_10;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.ApplicationContext;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = {
    		"/com/raylee/my_new_spring/my_new_spring/ch02/topic_1_10/ApplicationContext-test.xml" })
    public class ChiefTest {
    
    	@Autowired
    	private ApplicationContext applicationContext;
    
    	@Test
    	public void testChief() {
    		Chief jack = applicationContext.getBean(Chief.class);
    		jack.makeOneCake();
    	}
    }
    


    3.配置文件

    <?

    xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <bean id="blueberryCheeseCake" class="com.raylee.my_new_spring.my_new_spring.ch02.topic_1_10.Cake" p:name="blueberryCheeseCake" scope="prototype" /> <bean id="bigOven" class="com.raylee.my_new_spring.my_new_spring.ch02.topic_1_10.Oven" p:name="bigOven" /> <bean id="jack" class="com.raylee.my_new_spring.my_new_spring.ch02.topic_1_10.Chief" p:name="jack" /> </beans>



    測试输出:

    jack use bigOven and make blueberryCheeseCake


    总结:这一章节我们主要讨论了@autowired里面的參数required。


    文件夹:http://blog.csdn.net/raylee2007/article/details/50611627 

    我的github:https://github.com/raylee2015/my_new_spring


  • 相关阅读:
    数据绑定表达式语法(Eval,Bind区别)
    使用博客园的第一件事 自定义主题
    sql2000 跨服务器复制表数据
    使用UpdatePanel 局部刷新出现中文乱码的解决方法!!
    MMC不能打开文件MSC文件
    sql 日期 、时间相关
    loaded AS2 swf call function in AS3 holder
    Rewrite the master page form action attribute in asp.net 2.0
    100万个不重复的8位的随机数
    flash 中实现斜切变型
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7161939.html
Copyright © 2011-2022 走看看