浅谈Spring的理解

本文介绍了Spring框架的核心概念,包括IOC(控制反转)和AOP(切面编程)。阐述了如何利用Spring进行对象管理和模块解耦,以及AOP在业务功能和非业务功能分离上的优势。同时探讨了容器中Bean的不同作用域及其应用场景。
摘要由CSDN通过智能技术生成

为何使用Spring

Spring的核心是IOC(控制反转)和AOP(切面编程)。

谈谈IOC    从之前new对象到现在的使用spring的工厂模式管理对象。

通过Spring可以把整个系统分成不同的模块,不同的类。

通过spring来管理整个项目中不同的类,给这些类附加功能,把功能进行分类,进行解耦合,比如service要使用mapper的对象,可以在配置文件中给mapper对象赋值,当然这个时候mapper可以换换为别的值,此时他们的联系是比较松散的,可以在配置文件中设置这个对象到底是谁,我们项目中使用比较多的是使用注解开发,bytype、byname。又比如说service中使用mapper的对象,controller中使用service的对象,他们都是可以动态赋值的。我们在配置文件中或者使用注解方式来给他们赋值,这样他们的对象就比较灵活了,在修改上就比较方便了。不像不使用spring的时候,不像用goodsservice,想换个service,必须要改动源码才能实现,用spring的时候就可以使用这种解耦合的方式,让对象之间的依赖关系变的很松散。

像AOP主要解决的是业务功能和非业务功能的分离(如事务日志),把业务功能和非业务功能进行独立的开发。这样每个功能都比较专注,业务功能只专注业务,日志事务会有专门的人来做。通过AOP的动态代理技术,可以让业务方法在执行过程中,去加入我们所希望的日志和事务进行单独的管理。在其他地方用的也很多,像过滤器,也是用的AOP的这种思想,在所有业务方法之前,可以通过过滤器来做一些验证功能啊,做一些设置啊。在我们项目中我们用AOP做事务的比较多,在事务方面我们采用的是在配置文件中采用的声明事务,在配置文件中配置事务管理器,配置AOP的切面完成事务的处理功能说白了,修改代码越少,功能越强,在代码中就会节约很多的人力物力,在项目扩展增加新的模块就比较容易一些。在管理对象,解耦合,通过AOP可以让spring创建对象,spring创建的对象是可以给对象添加功能的,比如给对象创建代理,做事务,这些都是通过spring来实现的。

容器中 Bean的作用域

当通过 Spring 容器创建一个 Bean 实例时,不仅可以完成 Bean 的实例化,还可以通过
scope 属性,为 Bean 指定特定的作用域。Spring 支持 5 种作用域。 
(1) singleton: 单态模式。即在整个 Spring 容器中,使用 singleton 定义的 Bean 将是单例的,
只有一个实例。默认为单态的。 
(2)prototype:原型模式。即每次使用 getBean 方法获取的同一个<bean />的实例都是一个
新的实例。 
(3)request:对于每次 HTTP 请求,都将会产生一个不同的 Bean 实例。 
(4)session:对于每个不同的 HTTP  session,都将产生一个不同的 Bean 实例。 
注意: 
(1)对于 scope 的值 request、 session 只有在 Web 应用中使用 Spring 时,该作用域才有效。 
(2)对于 scope 为 singleton 的单例模式,该 Bean 是在容器被创建时即被装配好了。 
(3)对于 scope 为 prototype 的原型模式,Bean 实例是在代码中使用该 Bean 实例时才进行
装配的。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值