spring入门基本介绍及注入方式---详细介绍

一,spring的简介

Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。 提供了许多功能强大且易于使用的特性,使得开发者能够更加轻松地构建可维护且可扩展的应用程序,简单来说: Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。

1.1 spring能够干什么?

Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益

目的:解决企业应用开发的复杂性

功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能

范围:任何Java应用 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的 容器框架。

2.2 spring带来的好处?

2..2.1 提高开发效率:

Spring提供了大量的开发工具和库,简化了企业级应用的开发过程。它具有简单的配置、模块化的设计和丰富的文档,使得开发人员能够更快速地开发功能。

2.2.2 降低复杂性:

通过Spring的依赖注入和面向接口编程,开发者可以更容易地管理应用程序的复杂性。组件之间的解耦和模块化设计使得应用程序更易于理解、维护和扩展。

2.2.3 提高可测试性:

Spring的依赖注入模式使得应用程序的各个组件更容易进行单元测试。通过接口和模拟对象,开发者可以更方便地针对特定组件编写测试用例。

二,注入方式(三种)

第一种:set注入

定义一个接口并该接口定义一个方法 UserService

定义两个实现类去实现该接口重写其中的方法 UservServiceImpl1:

UservServiceImpl2:

会发现在不同的实现类,有着不同的方法,在后端将实例化当作看成一个属性,给该属性提供get set方法,并调用接口方法

两个后端Action

GoodsAction:

UserAction:

将spring部署到idea中,打开pom.xml,将url标签及build标签中间的部分改成下面代码

注意:后续步骤要连接网络 !,因为要下载spring插件等

XML 复制代码
  <properties>
    <spring.version>5.0.1.RELEASE</spring.version>
    <javax.servlet.version>4.0.0</javax.servlet.version>
    <junit.version>4.12</junit.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <!-- 2、导入spring依赖 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!-- 5.1、junit -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
    <!-- 5.2、servlet -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>${javax.servlet.version}</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

接下来根据下面步骤创建spring Config文件,如果没有该选项就是前面配置pom.xml文件没有连接网络,建议创建一个新的web项目,将包和类copy过去即可

spring.Config ioc容器的配置

最后 创建一个测试类来进行测试 text

运行结果:

第二种:构造注入

在第一种前提下使用无参有参构造及获取当前属性方法,方便在测试调用

spring.xml的配置:

在测试类调用属性方法

测试结果:

第三种:接口注入(自动装配)

3.1 byName

javaBean会根据属性名在spring的上下文中的bean的id进行查找,

有就会自动装配

修改spring-context.xml 配置文件

3.2 byType

JavaBean会以根据属性名对应的接口,在spring上下文中进行查找

查找方式:是根据spring上下文中是否有接口实现类进行匹配,只要有就自动配置

修改spring-context.xml 配置文件

相关推荐
做个文艺程序员1 小时前
第04篇:K8s 弹性伸缩实战:HPA、VPA、KEDA——Java SaaS 应对流量洪峰的秘密武器
java·容器·kubernetes·弹性伸缩·自动扩容·ai 推理伸缩
木雷坞2 小时前
Go 项目实战:用 MLiev IAM 落地企业认证中心
后端·golang·认证
石山代码5 小时前
ArrayList / HashMap / ConcurrentHashMap
java·开发语言
AskHarries6 小时前
系统提示词、开发者指令和用户输入的优先级
java·前端·数据库
Moment6 小时前
长上下文会最终杀死 Rag 吗?
前端·javascript·后端
daidaidaiyu7 小时前
ThingsBoard 规则链系统源码分析和自定义定时器
java
蝎子莱莱爱打怪7 小时前
🚀 🚀🚀2026年5月GitHub月榜精选:17个项目中挑出10个推荐,实操4个!
人工智能·后端·ai编程
小毛驴8507 小时前
spring-boot-maven-plugin,maven-compiler-plugin 功能对比
java·python·maven
csdn_aspnet7 小时前
Java 霍尔分区算法(Hoare‘s Partition Algorithm)
java·开发语言·算法
霸道流氓气质8 小时前
通义灵码 IDEA 插件完全使用指南
java·ide·intellij-idea