前情提要
核心API
- BeanFactory:
- Bean工厂,用于生产任意Bean
- 采取延迟加载,第一次getBean时才会初始化Bean
- ApplicationContect:
- BeanFactory的子类,拓展提供了更多的功能
- 国际化处理
- 事件传递
- Bean自动装配
- 各种不同应用层的Context实现
- ClassPathXmlApplicationContext:用于加载类路径classpath(src文件夹)下的xml文件
- FileSystemXmlApplicationContext:用于加载指定盘符下的xml文件
项目目录
项目代码
配置文件xml
常用名称: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">
<!-- 配置bean -->
<bean id="UserService" class="com.zhangzibu.spring.ioc.service.impl.UserServiceDi"></bean>
</beans>
Java代码
接口
package com.zhangzibu.spring.ioc.service;
public interface UserService {
void hello(String para);
}
实现类
package com.zhangzibu.spring.ioc.service.impl;
import com.zhangzibu.spring.ioc.service.UserService;
public class UserServiceDi implements UserService {
@Override
public void hello(String para) {
System.out.println("Hello " + para);
}
public UserServiceDi(){
System.out.println("UserServiceDi------构造函数");
}
}
测试类
package com.zhangzibu.spring;
import com.zhangzibu.spring.ioc.service.UserService;
import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
public class SpringTest {
@Test
public void test(){
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("/applicationContext.xml"));
System.out.println("BeanFactory....");
UserService userServiceBeanFactory = (UserService) beanFactory.getBean("UserService");
userServiceBeanFactory.hello("BeanFactory 张子布");
System.out.println(" ");
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/applicationContext.xml");
System.out.println("ApplicationContext....");
UserService userServiceApplicationContext = (UserService) applicationContext.getBean("UserService");
userServiceApplicationContext.hello("ApplicationContext 张子布");
}
}
结果
BeanFactory....
UserServiceDi------构造函数
Hello BeanFactory 张子布
UserServiceDi------构造函数
ApplicationContext....
Hello ApplicationContext 张子布