概述
依赖注入的3种方式
- 构造器注入(主要)
- setter注入(主要)
- 接口注入
构造器注入
- 构造器注入依赖于构造方法实现,而构造方法可以是有参数的或者是无参数的。在大部分的情况下,我们都是通过类的构造方法来创建类对象。
- 首先我们创建一个
POJO
public class Role {
private Long id;
private String roleName;
private String note;
public Role(String roleName, String note) {
this.roleName = roleName;
this.note = note;
}
}
/***setter and getter ***/
- 这个时候是没有办法利用无参数的构造方法去创建对象的,为了使Spring能够正确创建这个对象,可以
<?xml version='1.0' encoding='UTF-8' ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
<bean id="rolel" class="com.ssm.chapter9.pojo.Role">
<constructor-arg index="0" value="总经理"/>
<constructor-arg index="1" va1ue="公司管理者"/>
</bean>
</beans>
- 如果参数很多,那么这种构造方法就比较复杂
setter注入(最常用)
<bean id="role2" class="com.ssm chapter9.pojo.Role">
<property name="roleName" value="高级工程师"/>
<property name="note" value="重要人员"/>
</bean>
接口注入
- 有些时候资源并非来自于自身系统,而是来自于外界,比如数据库连接资源完全可以在
Tomcat
下配置,然后通过JNDI的形式去获取它,这样数据库连接资源是属于开发工程外的资源,这个时候我们可以采用接口注入的形式来获取它,比如在Tomcat
中可以配置数据源,打开服务器的context.xml
文件,添加:
<?xml version=1.0" encoding="UTF-8"?>
<Context>
<!--
name为JNDI名称
ur1是数据库的jdbc连接
username用户名
password数据库密码
-->
<Resource name="jdbc/ssm"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url=“jdbc:mysql://localhost:3306/ssm?zeroDateTimeBehavior=convertToNull"
username="root"
password="123456"
/>
</Context>
spring-config.xml
中配置:
<!--通过JNDI获取的数据源,通过 Spring的接口注入实现-->
<bean id="dataSource" class="org.springframework.jndi.UndiobjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/ssm</value>
</property>
</bean>