目录
- 一、创建Spring项目
- 1.1 创建一个Maven项目
- 1.2 添加Spring框架支持
- 1.3 创建启动类
- 二、使用Spring存储对象
- 2.1 创建Bean
- 2.2 将Bean注册到容器
- 三、获取并使用Bean对象
- 3.1 创建Spring的上下文
- 3.2 从Spring上下文对象中取出Bean对象
- 3.3 使用Bean
一、创建Spring项目
1.1 创建一个Maven项目
(1)
(2)
1.2 添加Spring框架支持
在pox.xml中添加的框架有 spring-context: spring 上下文,还有 spring-beans:管理对象的模块。这两个框架都能在Maven中央仓库种找到
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>spring-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
</dependencies>
</project>
1.3 创建启动类
在创建好的项⽬ java ⽂件夹下创建⼀个启动类,包含 main ⽅法即可:
二、使用Spring存储对象
存储Bean分为2步:
- 存储Bean的前提是得先有Bean,因此我们要先创建一个Bean
- 将创建好的Bean注册到Spring中
2.1 创建Bean
Bean就是Java中的一个普通的对象
2.2 将Bean注册到容器
在创建好的项目中添加 Spring 配置文件 spring.xml,将此文件放到 resources 的根目录下,如下图所示:
Spring 配置文件的固定格式为以下内容
<?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">
</beans>
然后将User对象注册到Spring中,在spring.xml(这个文件名是自定义的)中通过bean标签(bean标签要放到beans标签中)将User注册到Spring中
<?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">
<beans>
<bean id="user" class="com.bit.User"></bean>
</beans>
</beans>
三、获取并使用Bean对象
获取并使用Bean对象分为以下三步:
- 得到Spring上下文对象,由于我们将对象交给Spring管理了,所以获取对象要从 Spring 中获取,那么就得先得到 Spring 的上下文。
- 通过Spring上下文,获取指定的Bean对象
- 使用Bean对象
3.1 创建Spring的上下文
创建Spring的上下文有两种方式:
- 使用ApplicationContext类(来自于Spring)
- 使用BeanFactory类
(1)使用ApplicationContext,获取Spring上下文对象
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
public static void main(String[] args) {
//参数中传的是spring的配置文件名称
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring.xml");
}
}
(2)使用BeanFactory获取上下文对象
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("springconfig.xml"));
【ApplicationContext 和 BeanFactory的区别】
- 继承关系和功能来说:Spring容器有两个顶级的接口,BeanFactory和ApplicationContext,其中ApplicationContext是BeanFatory的子类,BeanFactory提供了基础的访问容器的能力,ApplicationContext除了继承了BeanFactory的所有功能之外,还拥有独特的特性,还添加了国际化支持、资源访问支持、以及事件传播等方面的支持
- 从性能方面来说:ApplicationContext是一次性加载并初始化所有的Bean对象,而BeanFactory是需要哪个才去加载哪个,因此更轻量
- ClassPathXmlApplicationContext是ApplicationContext的子类,拥有ApplicationContext的所有功能,通过xml的配置来获取所有的Bean容器
3.2 从Spring上下文对象中取出Bean对象
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring.xml");
User user=(User)applicationContext.getBean("user");//传的参数是对应bean标签中的id属性的值
【getBean的其他用法】
- 根据类型获取Bean,这种方法有个弊端,就是当Spring中有多个User对象时,Spring就不知道你要取哪个Bean对象
- 根据名称+类型获取
3.3 使用Bean
public static void main(String[] args) {
//参数中传的是spring的配置文件名称
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring.xml");
User user=(User)applicationContext.getBean("user");//传的参数是对应bean标签中的id属性的值
user.method();
}
运行结果: