核心容器
常用的核心容器为ApplicationContext,其创建方法如下:
1.首先导入核心jar包
2.具体代码如下:
package chapter01;
public interface UserDao {
public void say();
}
package chapter01;
public class UserDaoImpl implements UserDao{
public void say() {
System.out.println("Hello world! ");
}
}
配置文件applicationContext.xml
<?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.xsd">
<!--让spring创建id为 userDao的实例 -->
<bean id="userDao" class="chapter01.UserDaoImpl"></bean>
<!-- 添加一个id为“userService”的实例 -->
<bean id="userService" class="chapter01.UserServiceImpl">
<!-- 将id为userDao的bean实例注入到userService中 -->
<property name="userDao" ref="userDao"></property>
</bean>
</beans>
package chapter01;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestIoC {
public static void main(String[] args) {
// TODO Auto-generated method stub
//初始化spring核心容器,加载配置文件
ApplicationContext applicationContext =new ClassPathXmlApplicationContext("applicationContext.xml");
//通过容器获取userDao实例
UserDao userDao = (UserDao) applicationContext.getBean("userDao");
userDao.say();
}
}
依赖注入
spring容器来完成对象之间的依赖关系
代码如下:
package chapter01;
public interface UserService {
public void say() ;
}
需要在配置文件中加如下语句:
<bean id="userService" class="chapter01.UserServiceImpl">
<!-- 将id为userDao的bean实例注入到userService中 -->
<property name="userDao" ref="userDao"></property>
</bean>
package chapter01;
public class UserServiceImpl implements UserService{
//声明UserDao属性
private UserDao userDao;
//添加UserDao属性的setter方法,用于依赖注入
public void setUserDao(UserDao userDao) {
this.userDao=userDao;
}
//实现接口中的方法
public void say() {
//调用userDao中的say方法,并执行输出语句
this.userDao.say();
System.out.println("userdao say hello world !");
}
}
package chapter01;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestDI {
public static void main(String[] args) {
// TODO Auto-generated method stub
//1.初始化spring容器,加载配置文件
ApplicationContext applicationContext =new ClassPathXmlApplicationContext("applicationContext.xml");
//2.通过容器获取UserService实例
UserService userService=(UserService)applicationContext.getBean("userService");
userService.say();
}
}
总结
Spring最常用的容器是:ApplicationContext,他的初始化方法为:
ApplicationContext applicationContext =new ClassPathXmlApplicationContext("applicationContext.xml");
可以在配置文件中向容器中创建实例,如:
<bean id="userDao" class="chapter01.UserDaoImpl"></bean>
可以通过容器获取其中的实例:如:
UserDao userDao = (UserDao) applicationContext.getBean("userDao");
依赖注入的方法是:在依赖对象内增加一个setter()方法注入被依赖的实例,同时要在配置文件中,在依赖对象内加 property元素,如:
<bean id="userService" class="chapter01.UserServiceImpl">
<!-- 将id为userDao的bean实例注入到userService中 -->
<property name="userDao" ref="userDao"></property>
</bean>