zoukankan      html  css  js  c++  java
  • Spring 3.x企业应用开发实战(9-1)----依赖注入

    Spring中的依赖注入方式:属性注入、构造函数注入和工厂方式注入。


    1、属性注入

    属性注入即通过setXxx()方法注入Bean的属性值或依赖对象。

    属性注入要求Bean提供一个默认的构造函数,在Java中,如果没有定义任何构造函数,则JVM会自动为其生成一个默认的构造函数。反之,如果类中显示定义了构造函数,则JVM不会为其生成默认的构造函数,如public BeanCar(String carName){},则需要同时提供一个默认的public BeanCar(){},否则使用属性注入时将会抛出异常。

    <bean id="car" class="com.mrge.cp3.Car">
    		<property name="maxSpeed"><value>345</value></property>
    		<property name="color"><value>黑色</value></property>
    		<property name="brand"><value>红旗CA72</value></property>
    	</bean>

    这里属性的配置,要求bean中必须要有setter方法,而不一定需要属性变量。


    JavaBean关于属性名的特殊规范:

    Spring配置文件中,JavaBean允许以大小写字母开头,但必须是前两个字符必须同时为大或同时为小,如ic、IC、ICcard、IDCard、ICCard都是合法的,iC、Iccard、iCCard、iDCard就是非法的。

    2、构造函数注入:

    使用构造函数注入的前提是Bean必须提供带参的构造函数。

    #1、按类型匹配入参

    public Car(String brand,int maxSpeed)
    {
    	this.brand=brand;
    	this.maxSpeed=maxSpeed;
    }
    <bean id="car1" class="com.mrge.cp3.Car">
    		<constructor-arg type="java.lang.String">
    			<value>红旗CA72</value>
    		</constructor-arg>
    		<constructor-arg type="int">
    			<value>560</value>
    		</constructor-arg>
    	</bean>

    #2、按索引匹配入参

    public Car(String brand,String color,int maxSpeed)
    	{
    		this.brand=brand;
    		this.color=color;
    		this.maxSpeed=maxSpeed;
    	}
    <bean id="car2" class="com.mrge.cp3.Car">
    		<constructor-arg index="0" value="红旗CA72"/>
    		<constructor-arg index="1" value="白色"/>
    		<constructor-arg index="2" value="201"/>
    	</bean>


    这里索引是从0开始。

    #3、两种方式联合入参

    <bean id="car3" class="com.mrge.cp3.Car">
    		<constructor-arg index="1" type="java.lang.String">
    		 <value>红旗CA72</value></constructor-arg>
    		<constructor-arg index="2" type="java.lang.String">
    		<value>白色</value></constructor-arg>
    		<constructor-arg index="3" type="java.lang.String">
    		<value>201</value></constructor-arg>
    	</bean>


    #4、通过自身类型反射匹配入参

    public Boss(String name,Car car,Office office)
    {
    	this.name=name;
    	this.car=car;
    	this.office=office;
    }

    <bean id="boss" class="com.mrge.cp3.Boss">
    		<constructor-arg><value>Tom</value></constructor-arg>
    		<constructor-arg><ref bean="car"/></constructor-arg>
    		<constructor-arg><ref bean="office"/></constructor-arg>
    	</bean>
    <bean id="car" class="com.mrge.cp3.Car">
    <bean id="office" class="com.mrge.cp3.Office">






  • 相关阅读:
    用JavaScript往DIV动态添加内容
    【转】javascript入门系列演示·三种弹出对话框的用法实例
    ASP.Net:Table类的使用
    vs2010设置 "行号显示"
    HTML相对路径 当前目录、上级目录、根目录、下级目录表示法
    【转】算法基础(二):栈的应用 --- 迷宫解题
    【转】CSS中怎么让DIV居中
    【转】如何让DIV水平和垂直居中
    SQL : 在SQL Server 2008(Or Express)中如何Open并编辑数据表【转】
    SQL2005中设置自动编号字段【转】
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3356217.html
Copyright © 2011-2022 走看看