准备工作
- 导入spring依赖,我们导入spring-webmvc依赖,它会自动导入其它相关的依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.1</version>
</dependency>
- 编写一个实体类
//将对象的创建交给spring来管理
public class User {
private String name;
public User() {
System.out.println("User创建成功了。。。");
}
//交给spring来管理,通过set方法给给属性赋值
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
'}';
}
}
3.创建一个spring管理javabean文件,命名为beans.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就是java对象 , 由Spring创建和管理
bean的id表示该bean对象的唯一标识,class表示java实体类对应的全限名(包名+类名)
property中的name表示该实体类中属性名,value表示对该对象创建时自动注入值
-->
<bean id="user" class="pojo.User">
<property name="name" value="chenhui"/>
</bean>
</beans>
- 测试类
@org.junit.Test
public void test(){
//通过ClassPathXmlApplicationContext对象加载配置文件方式将javabean对象交给spring来管理
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
//在执行getBean的时候, user已经创建好了 , 通过无参构造
User user = (User)applicationContext.getBean("user");
System.out.println(user);
}
结果:
ApplicationContext核心容器接口常用实现类
- ClassPathXmlApplicationContext:它可以加载类路径下的配置文件,必须在类路径下存在,否则加载不了
- FileSystemXmlApplicationContext:它可以加载磁盘任意路径下的配置文件(必须要有访问权限),即采取磁盘全路径
- AnnotationConfigApplicationContext:它是用于读取注解创建容器的
核心容器两个接口的关系
-
ApplicationContext:它在构建核心容器时,创建对象采取的策略是采用立即加载的方式,即读取完配置文件马上就创建配置文件中的bean配置对象
-
BeanFactory:它在构建核心容器时,创建对象采取的策略是延迟加载的方式,即什么时候根据id获取对象,对象才被真正创建
//通过ClassPathResource实现类加载配置文件
Resource resource=new ClassPathResource("beans.xml");
//通过Resource构建BeanFactory工厂
BeanFactory beanFactory =new XmlBeanFactory(resource);
//获取工厂中的bean对象
User user = (User)beanFactory.getBean("user");
System.out.println(user);