Spring的基本应用(二)

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,保存配置环境方便使用)

Spring的基本应用(二)

  • 在src目录下,创建一个com.itheima,ioc包,并在包中创建接口UserDao,然后在接口中定义一个say()方法;

        创建com.itheima,ioc包

Spring的基本应用(二)

        创建接口UserDao

Spring的基本应用(二)

package com.itheima.ioc;

public interface UserDao {
	public void say();
}
  • 在com.itheima.ioc包下,创建UserDao接口实现类UserDaoImpl,改类需要实现接口中的say()方法,并在方法中编写一条输出语句;

Spring的基本应用(二)

Spring的基本应用(二)

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类的全限定名,获取如下图:

Spring的基本应用(二)

  • 编写测试类,在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();
	}

}
上一篇:单元测试出现:java.lang.IllegalStateException: Failed to load ApplicationContext


下一篇:数据上云,AI驱动,宝宝树如何服务千万年轻妈妈