实现IoC容器的方式分为两类,一类是依赖查找,主要是通过资源定位,把对应资源查找回来。另一类则是依赖注入,Spring主要使用的是依赖注入。
依赖注入可以分为三种形式:
- 构造器注入
- setter注入
- 接口注入
其中前两种为主要方式。
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>
<bean id="dateSource" class="org.springframework.jndi.Jndiobjectfactorybean">
<property name="jndiName">
<value>java:comp/env/jdbc/ssm</value>
</property>
</bean>
这样就可以在Spring的IoC容器中获得Tomcat所管理的数据库连接池了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。