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"
  • 不省略 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


相同点🍂

  1. 都可以获取 Spring
  2. 都是 Spring 的顶级接口(包含众多的方法)

ApplicationContext

BeanFactory

不同点🍂

  1. 继承关系
    ApplicationContext 属于 BeanFactory 的子类
  2. 功能
    BeanFactory 只有最基础的访问 Bean 的能力
    ApplicationContext 除了拥有 BeanFactory 的功能之外, 还包含更多的功能
    例如国际化🌐支持, 资源访问, 事件传播…
  3. 性能
    ApplicationContext 的加载方式是将 Bean 一次性加载(饿汉模式)
    BeanFactory 的加载方式是当需要某个 Bean 时再去加载所需的 Bean(懒汉模式)

继承关系

从 Spring 中读取 Bean🍂

  • 根据 Id 获取 BeanUser user = (User) context.getBean("user");
  • 需要将获取结果进行强转
  • user(Id)
  • 根据 类型 获取 BeanUser 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

🔎总结


  1. 操作容器之前, 需要先有容器(创建 Spring 项目)
  2. 容器的基本功能 — 存对象(存储 Bean)
  • 创建 Bean
  • 将 Bean 存储至 Spring
  1. 容器的基本功能 — 取对象(获取 Bean)
  • 获取 Spring
  • 从 Spring 中读取 Bean

相关文章
|
5月前
|
缓存 Java 数据库连接
Spring c3p0配置详解
【7月更文挑战第13天】
134 1
|
7月前
|
XML Java Maven
Spring的创建
Spring的创建
59 2
|
7月前
|
Java 程序员 Maven
Spring(Spring/Springboot 的创建) 基础
Spring(Spring/Springboot 的创建) 基础
|
7月前
|
Java Maven Spring
创建一个spring boot的3种方式
创建一个spring boot的3种方式
58 6
|
7月前
|
存储 Java Maven
【Spring】——Spring的创建与使用(二)
【Spring】——Spring的创建与使用
76 0
【Spring】——Spring的创建与使用(二)
|
7月前
|
XML Java Maven
【Spring】——Spring的创建与使用(一)
【Spring】——Spring的创建与使用
64 0
【Spring】——Spring的创建与使用(一)
|
存储 安全 Java
《Spring安全配置》
《Spring安全配置》
74 1
|
IDE Java Maven
手动创建Spring Boot 2.x项目
手动创建Spring Boot 2.x项目
291 0
手动创建Spring Boot 2.x项目
|
存储 Java Maven
Spring 创建和使用
spring-core的创建与使用
|
存储 XML Java
下一篇
DataWorks