依赖注入的三种方式
实现IoC容器的方式分为两类,一类是依赖查找,主要是通过资源定位,把对应资源查找回来。另一类则是依赖注入,Spring主要使用的是依赖注入。 依赖注入可以分为三种形式:
其中前两种为主要方式。 ? 1.构造器注入 依赖构造方法实现,大部分情况,我们通过类的构造方法来创建类对象,Spring也可以采用反射的方式,通过使用构造方法完成注入。 构造器注入-代码: package com.ssm.pojo; public class Demo{ private String name; private int age; //此处省略setter和getter public Demo(String name,int age){ this.name = name; this.age=age; } } 构造器配置-代码: <bean id="test" class="com.ssm.pojo.Demo"> <constructor-arg index="0" value="张三" /> <constructor-arg index="1" value="20" /> </bean> ? constructor-arg元素用于定义类构造方法的参数,index用于定义参数的位置,value则设置值,通过这样的定义Spring就知道使用Demo(String,int)这样的构造方法去创建对象了。 ? 2.使用setter注入 此种方法是Spring最主流的注入方式,利用Java Bean规范定义的setter方法注入。 配置setter注入-代码: <bean id="test2" class="com.ssm.pojp.Demo"> <property name="name" vlaue="李四" /> <property name="age" value="30" /> </bean> Spring会通过反射调用没有参数的构造方法生成对象,同时通过反射对应的setter注入配置的值。 ? 3.接口注入 主要应用于资源来自于非自身系统,而是来自外界,例如数据库连接资源可以在tomcat下配置,然后通过JNDI去获取这时候可以采用接口注入来获取它。 配置tomcat数据源-代码(context.xml): <Context> <Resource name="jdbc/ssm" auth="Container" type="javax.sql.DateSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysel://localhost:3306/ssm?zeroDateTimeBehavior=convertToNull" username="root" password:"123" /> </Context> 通过JNDI获取数据库连接资源-代码: <bean id="dateSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>java:comp/env/jdbc/ssm</value> </property> </bean> 这样就可以在Spring的IoC容器中获得Tomcat所管理的数据库连接池了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |