spring入门教程(spring 快速入门)

spring入门教程(spring 快速入门)svg xmlns http www w3 org 2000 svg style display none svg

大家好,我是讯享网,很高兴认识大家。



 <svg xmlns="http://www.w3.org/2000/svg" style="display: none"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0)"></path> </svg> 

讯享网

总结:为什么要使用Spring?

组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:

  • 模块 说明
  1. 核心容器Spring Core 核心容器,提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC)模式,将应用程序的配置和依赖性规范与实际的应用程序代码分开。
  2. Spring Context Spring上下文,是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
  3. Spring AOP 通过配置管理特性,Spring AOP 模块直接将面向切面的编程功能集成到了 Spring 框架中。可以很容易地使 Spring框架管理的任何对象支持AOP。Spring AOP模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,就可以将声明性事务管理集成到应用程序中。
  4. Spring DAO JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
  5. Spring ORM Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括JDO、Hibernate和iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
  6. Spring Web Web上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以Spring 框架支持与 Jakarta Struts的集成。Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
  7. Spring MVC框架MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。

Spring 框架的功能可以用在任何J2EE服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定J2EE服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同J2EE环境(Web或EJB)、独立应用程序、测试环境之间重用。

  • 核心组件:
  1. BeanFactory Spring内部使用,创建bean的工厂
  2. ApplicationContext 外部应用程序调用,也成为spring容器的上下文
  3. IoC控制反转
讯享网
  1. DI依赖注入
    Dependency Injection 松耦合方式实现对象直接的依赖

  2. AOP面向切面编程 补充java面向对象的不足
  1. org.springframework.core 核心工具包,其他包依赖此包
  2. org.springframework.beans 核心,包括:配置文件,创建和管理bean等
  3. org.springframework.aop 面向切面编程,提供AOP的实现
  4. org.springframework.context 提供IoC功能上的扩展服务,此外还提供许多企业级服务的支持,邮件、任务调度、JNDI定位、EJB集成、远程访问、缓存以及多种视图层框架的支持
  5. org.springframework.web.mvc 包含SpringMVC应用开发时所需的核心类
  6. org.springframework.transaction 为JDBC、Hibernate、JDO、JPA提供一致的声明式和编程式事务管理
  7. org.springframework.web 包含Web应用开发时所需支持类
  8. org.springframework.aspects 提供对AspectJ框架的支持
  9. org.springframework.test 对junit等测试框架的简单封装
  10. org.springframework.asm 3.0后提供自己独立的,反编译
  11. org.springframework.context.support Context的扩展支持,用于mvc方面
  12. org.springframework.expression Spring表达式语言
  13. org.springframework.instument 对服务器的代理接口
  14. org.springframework.jdbc 对jdbc的简单封装
  15. org.springframework.jms 为简化jms api的使用而做的简单封装
  16. org.springframework.orm 整合第三方orm,如hibernate/mybatis
  17. org.springframework.web.servlet 增强servlet

(spring容器是spring中的一个核心模块,用于管理对象)在此之前,当需要对象时,通常是利用new关键字创建一个对象:

 

而使用spring框架,对象的创建可以交给spring来做:

讯享网

只需要将类提前配置在spring配置文件中,就可以将对象的创建交给spring容器,当需要对象时,不需要自己创建,而是直接通过spring获取即可,省去了new对象,可以降低代码之间的耦合性。

2.2.1 创建Maven工程,引入spring相关依赖包

1、创建Maven—Java工程

2、引入spring的jar包:在maven工程的pom.xml文件中添加如下配置:

 

2.2.2 创建spring核心配置文件—applicationContext.xml

1、在工程的java/resources目录下,创建applicationContext.xml文件:

2、在applicationContext.xml中添加如下内容(下面的配置不需要掌握,只是一个文件格式):

讯享网
 

3、将Hello对象的创建交给Spring容器来管理,在核心配置文件中添加如下配置:

讯享网

2.2.4 创建测试类—TestIOC,创建Hello对象,并调用其中的方法。

 

这就是spring框架的IOC——控制反转。之前我们自己new对象,例如:

讯享网

而现在,变成由一个初始化的xml配置文件来创建,也就是由spring容器来创建。

 

当程序运行,spring开始工作后,会加载整个xml核心配置文件,读取到,获取到class属性中类的全路径,利用反射创建该类的对象。

  1. singleton:单实例,是默认值。这个作用域标识的对象具备全局唯一性。
    当把一个 bean 定义设置scope为singleton作用域时,那么Spring IOC容器只会创建该bean定义的唯一实例。也就是说,整个Spring IOC容器中只会创建当前类的唯一一个对象。
    这个单一实例会被存储到单例缓存(singleton cache)中,并且所有针对该bean的后续请求和引用都 将返回被缓存的、唯一的这个对象实例。
    singleton负责对象的创建、初始化、销毁。








  2. prototype:多实例。这个作用域标识的对象每次获取都会创建新的对象。
    当把一个 bean 定义设置scope为singleton作用域时,Spring IOC容器会在每一次获取当前Bean时,都会产生一个新的Bean实例(相当于new的操作)
    prototype只负责对象的创建和初始化,不负责销毁。





讯享网

多例:

 

讯享网

3、将applicationContext.xml中,Hello类bean标签的scope值设置为singleton:

 

4、将applicationContext.xml中,Hello类bean标签的scope值修改为prototype

讯享网
 

或者:

讯享网

4.2.1 普通属性注入

需求:通过Spring创建User实例,并为User实例的name和age属性(普通属性)赋值

1、创建User类,声明name和age属性,并添加对应的setter和getter方法,以及toString方法

 

2、在applicationContext.xml中声明User类的bean实例

讯享网

3、创建测试类—TestDI

 

由于这里没有为User对象的属性赋值,所以此时运行测试,结果为:

在这里插入图片描述

4、修改applicationContext.xml中User实例的声明,为User实例注入属性

讯享网

4.2.2 对象属性注入

需求:通过Spring创建User实例,并为User对象的userInfo属性(对象属性)赋值

1、创建UserInfo类

 

2、在applicationContext.xml中,声明UserInfo类的bean实例

讯享网

3、修改User类,声明userInfo属性,添加对应的setter和getter方法,并重新生成toString方法

 

4、在applicationContext.xml中,将UserInfo对象作为值,赋值给User对象的userInfo属性

讯享网

4.3 构造方法注入

 

2、修改applicationContext.xml文件,将set方式修改为构造方法注入。

讯享网

2、运行测试类TestDI,结果为:

在这里插入图片描述


小讯
上一篇 2025-05-06 09:36
下一篇 2025-04-26 19:42

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/171145.html