【框架篇】Spring 创建与使用介绍

这篇具有很好参考价值的文章主要介绍了【框架篇】Spring 创建与使用介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java

Spring 创建与使用

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java


一,Spring项目的创建

使用Maven方式来创建一个Spring项目,创建Spring项目和Servlet类似,总共分为以下3步:

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

1.1,创建一个Maven项目

创建一个普通的Maven项目注意点:项目名称和项目路径中不能有任何中文。

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java

当 Java源代码根目录出现颜色以及resources资源目录出现标识图像时,说明该Maven项目已经初始化完毕。

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java

1.2,添加Spring框架依赖

在项目的 pom.xml 中添加 Spring 框架依赖(spring-context依赖),xml 配置如下:

<dependencies>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.19</version>
    </dependency>
</dependencies>

在项目的 pom.xml 配置文件中添加spring-context依赖后,需点击刷新键重新加载Maven项目,操作如下:

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java

当在External Libra 目录下出现下述6个库,表明Spring-context依赖添加成功。

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java

疑问:我在pom.xml 中只添加了一个Spring-context依赖,但为啥最终会有6个依赖呢?

解答:Spring-context依赖的底层实现依赖于另外五个框架依赖,所以再添加Spring-context依赖的同时也会把这另外5个也添加。

1.3,添加启动类

在Java源代码根目录java下创建一个启动类,该启动类包含main方法即可。

该启动类的功能是:为后面从Spring容器中读取Bean做准备。

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java

测试Maven项目是否创建成功,可通过在main方法里写测试代码,根据代码能否成功运行来判断。

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java

注:上述测试代码能够正常运行,说明Maven项目创建以及配置成功。


二,存储Bean

2.1,创建Bean对象

Bean对象就是 Java 语⾔中的⼀个普通对象,只是该对象能够被多次调用并使用。

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java

2.2,将Bean注册到Spring

操作流程:在resources资源目录下添加 Spring 配置⽂件spring-config.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"
       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>

在resources资源目录下添加配置文件示意图:

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java

添加好配置文件后,再将Bean对象注册到 Spring 中就可以,具体操作是在 中添加如下配置:

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java

注:id 指明Bean对象名称,class 指明Bean对象路径(包名 + 类名)。

<bean id="student" class="org.example.Student"></bean>

上述表示含义为:将Bean(org.example.Student)存到Spring 容器中,它的名称叫作student


三,读取Bean

3.1,得到 Spring上下文

Spring 上下文对象的获取可使用 ApplicationContex,创建的时候需要配置 Spring 配置信息。

ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");

说明:ClassPathXmlApplicationContext属于ApplicationContext的⼦类,拥有ApplicationContext的所有功能,是通过 xml 的配置来获取Spring容器中所有的 Bean对象。

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java

注意:ClassPathXmlApplicationContext里的参数configLocation值应与Spring配置信息文件名相同。

3.2,获取指定Bean对象

获取指定Bean对象要求:getBean的参数值idclass要与指定Bean对象的idclass相对应。

Student student = context.getBean("student", Student.class);

获取指定Bean对象示意图:

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java

3.3,使用Bean对象

student.sayHi();

读取Bean对象并使用的总操作流程代码:

import org.example.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");
        //2,获取指定的Bean对象
        Student student = context.getBean("student", Student.class);
        //3,使用Bean对象(非必须)
        student.sayHi();
    }
}

读取Bean对象并使用的总操作流程代码执行结果:

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java


四,其他注意问题

4.1,获取Spring上下文的两种方式

1)ApplicationContext
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");

ApplicationContext 执行操作代码:

public static void main(String[] args) {
    //1,获得Spring对象上下文
    ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
    //2,获取指定的Bean对象
    Student student = context.getBean("student", Student.class);
    //3,使用Bean对象(非必须)
    student.sayHi();
}

执行 ApplicationContext 打印结果:

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java

2)BeanFactory
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));

BeanFactory 执行操作代码:

public static void main(String[] args) {
    //1,获得Spring对象上下文
    BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
    //2,获取指定的Bean对象
    Student student = beanFactory.getBean("student", Student.class);
    //3,使用Bean对象(非必须)
    student.sayHi();
}

执行 BeanFactoryt 打印结果:

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java

3)两种方式的区别

1,Student类(Bean对象)准备

public class Student {
    public Student(){
        System.out.println("do student init!");
    }

    public void sayHi(){
        System.out.println("Hi student!");
    }
}

2,Teacher类(Bean对象)准备

public class Teacher {
    public Teacher(){
        System.out.println("do teacher init!");
    }

    public void sayHi(){
        System.out.println("Hi teacher!");
    }
}

3,两种方式对比

执行 ApplicationContext (无获取指定的Bean对象操作) 打印结果:

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java

执行 BeanFactoryt (有获取指定的Bean对象操作) 打印结果:

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java

执行 BeanFactoryt (有获取指定的Bean对象操作) 打印结果:

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java

4,两种方式区别总结

ApplicationContext:该方式在获取Spring对象上下文时会对Spring容器中的所有Bean对象进行加载初始化。

方式特征:比较耗内存,一次性加载,后续Bean对象的读取不需进行加载初始化操作,效率高。

BeanFactory:该方式只有在调用getBean方法时才会进行加载初始化对应的Bean对象,而不是所有的Bean对象,属于懒加载。

方式特征:比较省内存,懒加载,只有当调用getBean时才会加载初始化对应的Bean对象,效率不高。

ApplicationContextBeanFactory的联系:

ApplicationContextBeanFactory都是接口,在使用时都是调用其的子类。

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java

两种方式对比区别:从继承功能方面和性能方面这两个方面进行比较说明。

  1. 继承关系和功能方面:BeanFactory 提供了基础的访问容器的能力,而ApplicationContext是BeanFactory的子类,它除了继承了BeanFactory的所有功能之外,它还拥有独特的特性还添加了对国际化支持、资源访问支持、以及事件传播等方面的支持。
  2. 性能方面:ApplicationContext是一次性加载并初始化所有的Bean对象,而BeanFactory是需要哪个才去加载并初始化哪个,因此BeanFactory更加轻量,但效率不高。

4.2,获取Bean对象的三种方式

1)通过名称获取
Student student = (Student) context.getBean("student");

该方式需经过两步操作,先获取到Bean对象,再经过强制类型转换为对应的类型,而强制类型转换容易出现空指针异常,不优雅。

如果Bean对象名称不存在,则会抛出NoSuchBeanDefinitionException异常。

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java

2)通过类名获取
Student student = context.getBean(Student.class);

该方式存在缺陷,当有⼀个类型被重复注册到 spring-config.xml 中时,不可使用该方式,若使用则会抛出NoUniqueBeanDefinitionException异常(非唯一的Bean异常)。

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java

3)通过名称+类名获取

该方式推荐使用,既避免了强制类型转换带来的空指针异常问题,也避免了只根据类名获取Bean方式带来的非唯一的Bean异常问题。

Student student = context.getBean("student", Student.class);

本文总结

1,Spring 创建与使用流程?

解答:Spring 创建与使用的流程分为三大步,分别为Spring项目的创建,Bean对象的存储以及Bean对象的读取。具体流程为:

1)Spring项目的创建

  1. 创建一个Maven项目
  2. 添加Spring框架依赖 【spring-context】
  3. 添加启动类 【功能:为后面从Spring容器中读取Bean做准备】

2)存储Bean

  1. 创建Bean对象
  2. 将Bean注册到Spring容器中 【spring-config.xml配置文件】

3)读取Bean

  1. 得到Spring 对象【ApplicationContext,BeanFactory】
  2. 通过Spring 对象的 getBean() 方法获取到Bean对象 【DI操作】
  3. 使用Bean对象 【非必须】

Spring 创建与使用的流程示意图:【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java


2,获取Spring的两种方式?区别?

1)ApplicationContext:在获取Spring对象上下文时会对Spring容器中的所有Bean对象进行加载初始化。

ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");

2)BeanFactory:只有在调用getBean方法时才会进行加载初始化对应的Bean对象,而不是所有的Bean对象。

BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"))

3)两种方式区别:从继承功能方面和性能方面两个方面进行比较说明。

  1. 继承关系和功能方面:BeanFactory 提供了基础的访问容器的能力,而ApplicationContext是BeanFactory的子类,它除了继承了BeanFactory的所有功能之外,它还拥有独特的特性还添加了对国际化支持、资源访问支持、以及事件传播等方面的支持。
  2. 性能方面:ApplicationContext是一次性加载并初始化所有的Bean对象,而BeanFactory是需要哪个才去加载并初始化哪个,因此BeanFactory更加轻量,但效率不高。

3,获取Bean对象的三种方式?

1)通过名称获取:有缺陷,需要进行强制性转换,而强制类型转换容易出现空指针异常。

Student student = (Student) context.getBean("student");

2)通过类名获取:有缺陷,当同类型的Bean对象有多个时,抛出NoUniqueBeanDefinitionException异常(非唯一的Bean异常)。

Student student = context.getBean(Student.class);

3)通过名称+类名获取:推荐使用,规避了上述问题。

Student student = context.getBean("student", Student.class);

结语

这就是本期博客的全部内容啦!如果有什么其他的问题无法自己解决,可以在评论区留言哦!

最后,如果你觉得这篇文章写的还不错的话或者有所收获的话,麻烦小伙伴们动动你们的小手,给个三连呗(点赞👍,评论✍,收藏📖),多多支持一下!各位的支持是我最大的动力,后期不断更新优质的内容来帮助大家,一起进步。那我们下期见!

【框架篇】Spring 创建与使用介绍,Java EE【进阶】,java-ee,spring,java文章来源地址https://www.toymoban.com/news/detail-564991.html


到了这里,关于【框架篇】Spring 创建与使用介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第一天)Mybatis的学习

    一、当前的主流框架介绍(这就是后期我会发出来的框架学习) Spring框架 ​ Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的 ,其主要优势之一就是分层架构。 Spring提供了更完善的开发环境,可以为POJO(Plain Ordinary Java Object,普通Java对象 )对象提供企业级

    2024年02月12日
    浏览(40)
  • (第十一天)初识SpringMVC SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录

    今天我们要来学习一下SSM框架的最后一个框架SpringMVC 一、初认SpringMVC 基本概念: ​ Spring MVC(Model-View-Controller)是一个用于构建Java Web应用程序的开源框架,它提供了一种基于MVC架构的方式来开发Web应用 。 ​ SpringMVC是Spring Framework的一部分,它是一种基于模型-视图-控制器(

    2024年02月07日
    浏览(52)
  • SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第五天)MyBatis的注解开发

    ​ 昨天我们深入学习了 MyBatis多表之间的关联映射,了解掌握了一对一关联映射,一对多关联映射,嵌套查询方式以及嵌套结果方式,掌握了缓存机制的一级缓存,二级缓存等概念,也使用了代码进行复现理解 。但是都是基于XML配置文件的方式来实现的,现在我们要学习一下

    2024年02月11日
    浏览(41)
  • SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第二天)Mybatis的深入学习

    上一篇我们的项目搭建好了,也写了简答的Junit测试类进行测试,可以正确映射到数据库中。 那么这篇文章来深入学习一下以下几个点: 了解 MyBatis的核心对象SqlSessionFactoryBuilder 以及它的作用 掌握MyBatis核心配置文件以及元素的使用 。 掌握MyBatis映射文件及其元素的使用 。

    2024年02月11日
    浏览(48)
  • 【框架篇】Spring Boot核心介绍及项目创建(详细教程)

    Spring Boot 是基于 Spring 开发的一种轻量级的全新框架,不仅继承了 Spring 框架原有的优秀特性,而且还通过简化配置来进一步简化了 Spring 应用的整个搭建和开发过程。通过 Spring Boot ,可以轻松地创建独立的,基于生产级别的和基于 Spring 的应用程序。 Spring 的诞生是为了简化

    2024年02月16日
    浏览(31)
  • 【JavaEE进阶】Spring 创建与使用

    使用Maven方式来创建一个Spring项目,创建Spring项目和Servlet类似,总共分为以下3步: 创建一个普通Maven项目 添加 Spring 框架⽀持(spring-context、spring-beans) 添加启动类 1.1,创建一个Maven项目 创建一个普通的Maven项目注意点:项目名称和项目路径中不能有任何中文。 当 Java源代码

    2024年02月13日
    浏览(56)
  • 【Java】Spring框架介绍

    人不走空                                                                        目录       🌈个人主页:人不走空       💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 1. Spring框架的核心理念 1. 轻量级和非侵入性 1.1.1 轻量级设计 1.1.2 非侵入性的

    2024年02月21日
    浏览(29)
  • Java开发框架:Spring介绍

    Spring 是 Java EE 编程领域中的一个轻量级开源框架,由 Rod Johnson 在 2002 年最早提出并随后创建,目的是解决企业级编程开发中的复杂性,实现敏捷开发的应用型框架 。其中,轻量级表现在 Spring 是非侵入式的,即开发应用中的对象可以不依赖于 Spring 的 API 类。另外,Spring 针对

    2024年02月08日
    浏览(41)
  • 【Spring框架】SpringBoot创建和使用

    Spring 的诞⽣是为了简化 Java 程序的开发的,⽽ Spring Boot 的诞⽣是为了简化 Spring 程序开发的。 1.起步依赖(创建的时候就可以方便的添加依赖) 2.内置Tomcat容器 3.快速部署,使用jar包加上简单的命令直接运行 4.抛弃XML的配置方式 5.提供了更多的监控框架,方便的监控系统运行

    2024年02月14日
    浏览(26)
  • Java、Java EE、Spring和Spring Boot核心注解

    文章迁移至个人博客 此页面包含常用 Java 、 Java EE 、 Spring 、 Spring Boot 、 JPA 常用注解的一站式说明。 @Component注解 @Component 注解表明被注解的类是一个“spring bean/组件”。@Component注解告诉Spring容器自动创建Spring bean。 @Autowired注解 @Autowired 注解用于自动注入 bean。@Autowired 注

    2024年02月15日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包