目录
前言
一、ApplicationContext 和 BeanFactory 的区别
二、主要工作流程
三、开发步骤
3.1、创建Maven项目
3.2、创建Spring的核心配置文件
3.3、创建程序入口类
3.4、跟Spring打声招呼吧~
小结
前言
有两大顶级接口可以获取Spring对象,他们分别是 ApplicationContext 和 BeanFactory,而我们日常开发主要使用的是 ApplicationContext。
一、ApplicationContext 和 BeanFactory 的区别
相同点:
1.都可以得到Spring对象(Spring上下文)。
2.都是来自Spring的顶级接口。
不同点:
1.继承关系:ApplicationContext 属于 BcanFactory 的子类。
2.功能:BcanFactory只有最基础访问Bean的能力,而ApplicationContext 除了拥有 BeanFactory功能之外,还包含了更多功能,如:国际化支持、资源访问、时间传播等。
3.性能:ApplicationContext 加载方式是将 Bean 对象一次性加载,所以在访问 Bean 对象时会很快(饿汉模式,但也不完全是,现在的高版本会根据你电脑的情况智能的去加载,如果刚开始加载时系统资源比较紧张,就会放到后面加载);BeanFactory 只有需要在需要某个 Bean 时,才会加载 Bean 对象, 所以它在执行 Bean 获取时,比较慢(懒汉模式)。
二、主要工作流程
三、开发步骤
3.1、创建Maven项目
首先需要在pom.xml配置文件中引入相关依赖,引入完后记得刷新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-demo2</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
</dependencies>
</project>
3.2、创建Spring的核心配置文件
在src/main/resources下创建一个xml文件用来声明加载Bean对象;
base-package是用来扫描指定包下的Spring注解,找到对应的Bean对象,加载到Spring中;
Ps:
类注解 :放在类上,将对象存储到Spring中的五大注解,他们的功能相同,只是用来标识功能的,方便程序员辨别;
@Controller:控制器
@Service:服务
@Repository:仓库
@Component:组件
@Configuration:配置
方法注解
@Bean:放在方法上,将当前修饰方法的返回的对象存储到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"
xmlns:content="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!--base-package表示要扫描的路径-->
<content:component-scan base-package="com.demo.component"></content:component-scan>
</beans>
3.3、创建程序入口类
有了这个程序入口类,我们就可以获取Spring对象了,同时,获取Spring时需要给一个参数,这个参数就像是创建Spring容器的一个指导书(声明加载Bean对象的xml文件),这个 指导书就会告诉Spring需要将哪些Bean对象注入到容器(这里其实还有很多方式,但那些方式比较low,这里我们只需要掌握:扫描对应包下注解的方式);
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
public static void main(String[] args) {
//获取Spring对象(Spring上下文)
ApplicationContext context =
new ClassPathXmlApplicationContext("spring-config.xml");
}
}
3.4、跟Spring打声招呼吧~
我们可以在扫描的包下创建一个Bean对象,通过上面步骤获取了Spring对象之后,就可以通过getBean方法获取Bean对象啦~
import com.demo.component.ArticleController;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
public static void main(String[] args) {
//获取Spring对象(Spring上下文)
ApplicationContext context =
new ClassPathXmlApplicationContext("spring-config.xml");
//获取Bean对象,这里第一个参数是Spring自己生成的身份标识,默认是类名(第一个首字母小写)
ArticleController articleController =
context.getBean("articleController", ArticleController.class);
//使用Bean对象
System.out.println(articleController.sayHello());
}
}
你好,Spring!
小结
你学费了吗?