Spring详解,Spring配置,如何实现依赖注入以及AOP的使用及扩展

本文详细介绍了Spring框架的核心概念,包括IoC(控制反转)和DI(依赖注入),并通过实际操作展示了如何在Spring中实现这两种机制。此外,文章还探讨了Spring的AOP(面向切面编程)使用,包括代理实现形式和应用场景,并提供了配置及测试示例。同时,文章还涵盖了Ioc和AOP的扩展应用,如构造注入、异常通知和环绕通知。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring介绍:

1、Spring的核心是一个轻量级(Lightweight)的容器(Container)。
2、Spring是实现IoC(Inversion of Control)容器和非入侵性(No intrusive)的框架。
3、Spring提供AOP(Aspect-oriented programming)概念的实现方式。
4、Spring提供对持久层(Persistence)、事物(Transcation)的支持。
5、Spring提供MVC Web框架的实现,并对一些常用的企业服务API(Application Interface)提供一致的模型封装。
6、Spring提供了对现存的各种框架(Structs、JSF、Hibernate、Ibatis、Webwork等)相整合的方案。
总之,Spring是一个全方位的应用程序框架。
Spring是一个企业级应用框架。其中包含了大量的各种应用组件。Spring框架为现代基于Java的企业应用程序提供了一个全面的编程和配置模型,能够在任何类型的部署平台上进行部署。其核心是Ioc和AOP

Spring 中的两个核心概念

新手在刚接触Spring的时候,对 控制反转和依赖注入这两个名词感到很模糊,不知道这个Spring的核心 理念有什么关系,接下来笔者带领大家去解析以下Ioc和AOP

Ioc(Inversion of Control):控制反转

控制反转不是一种技术,而是一种思想,首先要理解为什么要叫控制反转,我们在传统javase里面去创建对象的时候,需要通过手动new一个对象来进行创建,属于程序主动去创建一个依赖对象,而现在Ioc有一个容器去帮我们管理这些对象的创建,那么我们就可以理解为是Ioc容器去控制这些依赖对象的创建。那什么是反转呢,为什么要叫反转,我们进行传统的创建对象时,是我们主动去创建依赖对象,这叫 正转,而现在是由容器帮忙来创建以及注入依赖对象,所以叫做反转,因为容器在帮我们去进行对象的创建时候,对象只是被动的接收依赖对象,所以是反转,也叫依赖的对象被反转了。合起来这也就是控制反转的概念。

DI:依赖注入(Dependency Injection)

同样我们去理解依赖注入的时候,也像这么去理解,谁依赖了谁,为什么要依赖,谁注入了谁 ,注入了什么。
●谁依赖于谁:当然是应用程序依赖于IoC容器;

●为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源;

●谁注入谁:很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象;

●注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)。

Spring的优点

1.低侵入式设计
2.独立于各种应用服务器
3.依赖注入特性将组件之间的关系透明化,降低了耦合度
4.面向切面编程允许将 通用任务进行集中式处理
5.与第三方框架的良好整合。

Spring工程的构建

首先我们需要创建一个maven项目,在pom文件中添加依赖

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

Spring资源文件的编写

同样,我们需要在resources资源文件包下面新建一个Spring的资源文件,在文件里面写下面这段代码

<?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">
    
</beans>

完成控制反转和依赖注入

<bean id="userInfo" class="com.domain.UserInfo">
        <!--完成依赖注入 DI-->
        <property name="username" value="张三" />
        <property name="content" value="刘家豪大笨蛋!" />
 </bean>

bean的配置,id为你要注入的哪个对象,class为这个对象的全限定类名,property为你要为这个对象的变量去进行注入值,name为属性名,value为属性值
补充:在同一个配置文件下,bean的id只能有一个,不能重复,如果重复将会报错,报错信息如下
再次补充,如果你的变量是普通类型变量,那么就用value赋值,如果你的变量是对象级别的变量,例如接口,那么不能用value,只能用ref,去ref你已经实例化好的类,name同样是拟注入这个对象里面的变量名,下面是例子:

<!--纸张实现类-->
    <bean id="a4Paper" class="com.csi.domain.impl.A4Paper" />

    <bean id="b5Paper" class="com.csi.domain.impl.B5Paper" />

    <!--喷墨实现类-->
    <bean id="blackInk" class="com.csi.domain.impl.BlackInkBox" />

    <bean id="colorInk" class="com.csi.domain.impl.ColorInkBox" />

    <!--组装打印机-->

    <!--bean代表着一个类,id代表你实例化对象后的那个对象名,class为你要实例化的这个类的全限定类名-->
    <bean
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值