前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【JavaEE进阶】Spring创建与使用

【JavaEE进阶】Spring创建与使用

作者头像
xxxflower
发布2023-10-16 15:06:00
1560
发布2023-10-16 15:06:00
举报
文章被收录于专栏:《数据结构》
一. 创建 Spring 项目

接下来使⽤ Maven ⽅式来创建⼀个 Spring 项⽬,创建 Spring 项⽬和 Servlet 类似,总共分为以下 3步:

  1. 创建⼀个普通 Maven 项⽬。
  2. 添加 Spring 框架⽀持(spring-context、spring-beans)。
  3. 添加启动类。

1.1 创建一个Maven项目

此处使用的IDEA版本为2021.3.2.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意:项目名称中不能有中文.

在这里插入图片描述
在这里插入图片描述

1.2 添加Spring依赖

  1. 配置Maven国内源. IDEA设置文件有两个(一个是当前项目配置文件,新项目配置文件).需要设置这两个配置文件的国内源. 当前项目配置文件:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置settings.xmlC:\Users\xxxflower\.m2中.

在这里插入图片描述
在这里插入图片描述

使用VScode打开文件.

在这里插入图片描述
在这里插入图片描述

新项目的配置文件:

在这里插入图片描述
在这里插入图片描述

方法同上设置新项目的配置文件.

  1. 重新下载jar包.(可无) 清空删除本地所有的jar包.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  1. 添加Spring依赖 在Maven中央仓库中搜索 Spring,点击5.x.x版本复制到pom.xml中.重新reload
在这里插入图片描述
在这里插入图片描述

1.4. 创建一个启动类

在这里插入图片描述
在这里插入图片描述

二. 将 Bean 对象存放至 Spring 容器中

  1. 创建一个bean.(在Java中一个对象如果被使用多次,就可以称之为Bean)
在这里插入图片描述
在这里插入图片描述
  1. 将Bean存储到Spring容器中
在这里插入图片描述
在这里插入图片描述

三. 从 Spring 容器中读取到 Bean

1. 得到Spring对象

想要从 Spring 中将Bean对象读取出来,先要得到 Spring 上下文对象,相当于得到了 Spring 容器。再通过 spring 上下文对象提供的方法获取到需要使用的Bean对象,最后就能使用Bean对象了。 ApplicationContext,也称为控制反转(IoC)容器,是 Spring 框架的核心。

实现类

描述

ClassPathXmlApplicationContext(常用)

加载类路径下的配置文件,要求配置文件必须在类路径下

FileSystemXmlApplicationContext

可以加载磁盘任意路径下的配置文件(必须要有访问权限)

AnnotationContigApplicationContext

用于读取注解创建容器

代码语言:javascript
复制
package demo;

public class Student {
    public Student() {
        System.out.println("Student 已加载!");
    }
    public void sayHi(String name) {
        System.out.println("Hello!" + name);
    }
}
package demo;

public class Teacher {
    public Teacher() {
        System.out.println("Teacher 已加载!");
    }
    public void sayHi(String name) {
        System.out.println("Hello!" + name );
    }
}
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
import demo.Student;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
    public static void main(String[] args) {
        //1.得到 Spring
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
}

运行结果:

在这里插入图片描述
在这里插入图片描述

程序启动,ApplicationContext创建时,会将所有的Bean对象都构造,类似于饿汉的方式。

代码语言:javascript
复制
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;

public class App2 {
    public static void main(String[] args) {
        // 1. 得到 bean 工厂
        BeanFactory factory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
    }
}

运行结果:

在这里插入图片描述
在这里插入图片描述

程序启动,在BeanFactory创建时,结果中没有如何输出,只要不去获取使用Bean就不会去加载,类似于懒汉的方式。

2. 通过Spring 对象getBean方法获取到 Bean对象【DI操作】

获取getBean的三种方式:

  1. 根据Bean的名字来获取
代码语言:javascript
复制
Student student = (Student) context.getBean("student");

此时返回的是一个Object对象,需要我们去进行强制类型转换。

  1. 根据Bean类型获取
代码语言:javascript
复制
Student student = context.getBean(Student.class);

这种方式当beans中只有一个类的实例没有问题,但是个有多个同类的实例,会有问题,即在 Spring 中注入多个同一个类的对象,就会报错。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

抛出了一个NoUniqueBeanDefinitionException异常,这表示注入的对象不是唯一的.

  1. 根据名称 + 类型获取
代码语言:javascript
复制
Student student = context.getBean("student",Student.class);

运行结果:

在这里插入图片描述
在这里插入图片描述

相比方式1更好,也是较为常用的方法.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一. 创建 Spring 项目
  • 1.1 创建一个Maven项目
  • 1.2 添加Spring依赖
  • 1.4. 创建一个启动类
  • 二. 将 Bean 对象存放至 Spring 容器中
  • 三. 从 Spring 容器中读取到 Bean
    • 1. 得到Spring对象
      • 2. 通过Spring 对象getBean方法获取到 Bean对象【DI操作】
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档