您现在的位置是:首页 >学无止境 >Spring的创建和使用网站首页学无止境
Spring的创建和使用
简介Spring的创建和使用
Spring的创建和使用
?Spring的创建
创建Maven项目
引入Spring依赖
添加如下代码至pom.xml
文件中
<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>
如果Jar包下载失败
可以参考这篇文章
添加启动类
?Spring的使用
Spring 是包含众多工具方法的IOC容器
Spring 作为一个容器. 最基本的功能为
- 将对象存入到容器
- 从容器中取出对象
在 Java 中, 可以将对象称为 Bean
存储Bean
存储 Bean 可以分为2个步骤
- 创建 Bean
- 将 Bean 存储至 Spring
创建 Bean?
public class User {
public String sayHi() {
return "hi!";
}
}
将 Bean 存储至 Spring?
存储之前, 需要在 resources 下创建xml
文件用于声明Spring
(指引 Spring 的后续操作)
复制如下代码至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"
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">
</beans>
将 Bean 存储至 Spring
<bean id="user" class="test.User"></bean>
注意?
<bean id="" class=""></bean>
- id
- id 是对 Bean 的编号, 此处的 id 不允许重复
- 通常情况下, 存储 Bean 是为了能够将其获取, 而获取 Bean 依赖其对应的 id(编号)
- class
- class 是指 Bean 的类型, 如果 Bean 存储在某一包(Package)下, 需要在前面添加包的包名, 用
.
分隔 - 例如 User 存储在 test 包下, 其
class="test.User"
- class 是指 Bean 的类型, 如果 Bean 存储在某一包(Package)下, 需要在前面添加包的包名, 用
- 不省略 id 和 class
- 无论 class 是否相同, 只要 id 不同便不会报错(通过 Id 获取 Bean)
- 只要 class 相同, 无论 id 是否相同都会报错(通过 类型 获取 Bean)
- 省略 class 不省略 id 运行时会报错
- 省略 id 不省略 class
- 只有一个该类型时运行不会报错(类型不同)
- 有多个该类型时运行会报错(类型相同)
- 此处的类型包含包名
对于省略 id 不省略 class 的解释?
类型(包名 + 类型)不同, 其运行时不会报错
包名 test1, test2
类型 User
<bean class="test1.User"></bean>
<bean class="test2.User"></bean>
类型(包名 + 类型)相同, 运行时会报错
包名 test
类型 User
<bean class="test.User"></bean>
<bean class="test.User"></bean>
获取Bean
获取 Bean 可以分为2个步骤
- 获取 Spring
- 从 Spring 中读取 Bean
- 使用 Bean(非必须)
获取 Spring?
- 通过
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
获取 - 通过
BeanFactory context = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
获取
注意?
configLocation 需要对应 resources 下的 xml 文件
对比ApplicationContext与BeanFactory
相同点?
- 都可以获取 Spring
- 都是 Spring 的顶级接口(包含众多的方法)
ApplicationContext
BeanFactory
不同点?
- 继承关系
ApplicationContext 属于 BeanFactory 的子类 - 功能
BeanFactory 只有最基础的访问 Bean 的能力
ApplicationContext 除了拥有 BeanFactory 的功能之外, 还包含更多的功能
例如国际化?支持, 资源访问, 事件传播… - 性能
ApplicationContext 的加载方式是将 Bean 一次性加载(饿汉模式)
BeanFactory 的加载方式是当需要某个 Bean 时再去加载所需的 Bean(懒汉模式)
继承关系
从 Spring 中读取 Bean?
- 根据 Id 获取 Bean
User user = (User) context.getBean("user");
- 需要将获取结果进行强转
- user(Id)
- 根据 类型 获取 Bean
User user = context.getBean(test.User.class);
- test.user(test 包名 / user 类型)
- 根据 Id + 类型 获取 Bean
User user = context.getBean("user", test.User.class);
建议使用 Id + 类型 的方式获取 Bean
对于根据 Id 获取 Bean
当 getBean 的结果为其他引用类型时, (User)其他引用类型 → Error
对于根据 类型 获取 Bean
当 xml 文件中注入多个相同的类型时(不考虑包的情况) → Error
?总结
- 操作容器之前, 需要先有容器(创建 Spring 项目)
- 容器的基本功能 — 存对象(存储 Bean)
- 创建 Bean
- 将 Bean 存储至 Spring
- 容器的基本功能 — 取对象(获取 Bean)
- 获取 Spring
- 从 Spring 中读取 Bean
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。