1.Spring的核心容器
Spring容器会负责控制程序之间的关系,而不是由程序代码直接控制。Spring为我们提供了两种核心容器,分别为BeanFactory和ApplicationContext。
1.1 BeanFactory
创建BeanFactory实例时,需要提供Spring所管理容器的详细配置信息,这些信息通常采用XML文件形式来管理,其加载配置信息的语法如下:
BeanFactory beanFactory=
new XmlBeanFactory(new FileSystemReasource("F:/applicationContext.xml"));
- "F:/applicationContext.xml"为XML配置文件的位置;
1.2 ApplicationContext
ApplicationContext是BeanFactory的子接口,是另一种常用的spring核心容器。它由org.springframwork.context.ApplicationContext接口动议,不仅包含了BeanFactory的所有功能,还添加了对国际化、资源访问、事件传播等方面的支持。创建ApplicationContext接口实例,通常采用两种方法:
- 通过ClassPathXmlApplicationContext创建
ApplicationContext.applicationContext=
new ClassPathXmlApplicationContext(String configLocation);
ClassPathXmlApplicationContext会从类路径Path中寻找置顶的XML配置文件,找到并装载完成AplicationContext的实例化工作。
- 通过FileSystemXmlApplicationContext创建
ApplicationContext.applicationContext=
new FileSystemXmlApplicationContext(String configLocation);
FileSystemXmlApplicationContext 会从指定的文件系统路径(绝对路径)中寻找XML配置文件,找到并装载完成AplicationContext的实例化工作。
在Java项目中,通常使用ClassPathXmlApplicationContext类来实例化ApplicationContext容器;在Web项目中,ApplicationContext容器的实力虎啊会交由Web服务器来完成。
创建spring容器后就可以获取spring容器中的Bean。Spring获取Bean的实力通常采用以下两种方法:
- Object getBean(string name);
· 根据容器中Bean的id或name来获取指定的Bean,获取之后需要进行强制类型转换。
- <T>T getBean(Class<T> requiredType);
根据类的类型来获取Bean的实例。由于此方法为泛型方法,因此在获取Bean之后不需要进行强制类型转换。
2.Spring的入门程序
- 在eclipse中,创建一个名为chapter01的Web项目,将Spring的4个基础包以及commons-logging的jar包复制到lib目录中,并发布到类路径下;(改变默认环境为1.8,保存配置环境方便使用)
- 在src目录下,创建一个com.itheima,ioc包,并在包中创建接口UserDao,然后在接口中定义一个say()方法;
创建com.itheima,ioc包
创建接口UserDao
package com.itheima.ioc;
public interface UserDao {
public void say();
}
- 在com.itheima.ioc包下,创建UserDao接口实现类UserDaoImpl,改类需要实现接口中的say()方法,并在方法中编写一条输出语句;
package com.itheima.ioc;
public class UserDaoImpl implements UserDao {
@Override
public void say() {
// TODO Auto-generated method stub
System.out.println("Hello World");
}
}
- 在src目录下,创建Spring的配置文件applicationContext.xml,并从配置文件中创建一个id为userDao的Bean。
<?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.3.xsd">
<!-- 使用的版本为4.3 -->
<!--将指定类配置给spring,让spring创建其对象的实例-->
<bean id="userDao" class="com.itheima.ioc.UserDaoImpl"></bean>
</beans>
"com.itheima.ioc.UserDaoImpl "是class类的全限定名,获取如下图:
- 编写测试类,在src中创建类名为TestIoc的测试类。
①初始化spring容器,加载配置文件
②通过容器获取userDao实例
③调用实例化方法
package com.itheima.ioc;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestIoc {
public static void main(String[] args) {
// 1.初始化spring容器,加载配置文件
ApplicationContext applicationContext =new ClassPathXmlApplicationContext("applicationContext.xml");
//2.通过容器获取userDao实例
UserDao userDao=(UserDao) applicationContext.getBean("userDao");
//3.调用实例化方法
userDao.say();
}
}