浅谈Spring概念(DI,IoC,AOP)

 

Spring重要的思想:IoC&DI:

控制反转:将对象的创建权交给了spring

依赖注入:需要有IOC的环境,spring创建这个类的过程中,将这个类的依赖属性注入。就比如EE开发,有三层,分别是Action,Service,DAO。

action是管理,是总管,是分配任务的。

service是事务层,是进行逻辑操作的。

DAO是封装增删改查的。

那很明显,service依赖DAO,action依赖service,所以当spring创建的时候就需要将DAO注入到service,将service注入到action中。这就是注入依赖。

##我查了很多资料也看了很多文章,在我的理解里,其实IoC和DI是一个东西也是一个意思,就是讲的将对象的创建权交给spring来创建了。控制反转说的是意义与概念,而DI依赖注入更加注重表达的是从更具体的来描述了这个过程,让你从名字上就能知道,“噢,原来这就是IoC,这就是DI”。

 

AOP:

Aspect-OrientedProgramming,面向方面编程。用通俗一点的话来,其实就是把公用代码封装起来,减少重复代码。我相信很多程序员朋友在刚入门或者入门不久都会有这种思想,比如C中,将某个功能另外写成一个函数,实现功能函数,然后以后要再用的时候直接调用就可以,再者,以后需要维护或者修改的时候,直接在功能函数上修改。我画了张图,大概就是面向方面编程的意思,如果有不对,请大牛指出。

关于AOP相关概念:

1.通知 (Advice):

也就是我上图所画的公用功能A,其实就是你想定义的公用代码的功能。

2.连接点(JoinPoint):

也就是spring允许你在哪里使用通知。spring允许你在方法的前后,或者抛出异常的时候使用通知。

3.切入点(Pointcut):

上面的连接点是允许你使用,那你实际想要在哪使用就是切入点了。(注意我标黑体部分字就能理解了)

4.切面(Aspect):

切面就是通知和切入点的结合,就称为切面。

5.引入(introduction):

允许向现有的方法添加新的方法属性,其实就是把切面引入到目标类。

6.目标(target):

也就是目标类。

7.代理(proxy):

实现整套的AOP机制。

8.织入(weaving):

把切面应用到目标对象来创建新的代理对象的过程。

 

AOP实现原理:

前面说的将公用代码封装起来,需要的时候再调用,这是一个很简单的思想,毕竟程序员都是懒的。那在AOP里是怎么样实现这个过程的?

它是先创建一个伪装类,伪装成目标类,调用的时候,先调用到伪装类,然后进行了你想进行的操作(也就是通知),之后再调用目标类。

那要怎么实现这个伪装类呢

1,实现接口

2,创建子类

第一种实现接口就像,有人求你办事,这时候你的弟弟跳出来先见到这个人,然后收好处,也就是实现切面。收完好处之后,再去通知你,让你去帮别人办事,整个过程就是AOP思想了。

第二种创建子类,就相当于,你生了个儿子,学会了你所有的本领,也就是继承了你所有的方法。但是不同于你的一点就是,帮别人办事之前都喜欢占点小便宜,这就是创建子类实现AOP思想。

Spring配置:

bean元素:使用该元素描述需要spring管理的对象。

name属性:给被管理的对象起个别名

class属性:被管理对象的完整类名

spring的创建方式(只讲空参构造):

scope属性:singleton:单例

                    prototype:多例

 

   

 

 

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: SpringDI(依赖注入)和IOC(控制反转)是Spring框架中的两个核心概念DI是指通过外部容器来注入对象的依赖关系,而不是在对象内部创建或查找依赖对象。IOC是指将对象的创建和依赖关系的管理交给容器来完成,而不是由对象自己来管理。\[1\] 在Spring中,IOC容器的初始化过程包括加载配置文件、解析配置文件、实例化Bean对象并将其存储在IOC容器中。可以通过注解来实现基于注解的容器初始化,通过在类上添加注解来标识其作为Bean,并通过注解来指定依赖关系。\[2\] AOP(面向切面编程)是Spring框架中的另一个重要概念,它允许在程序运行期间动态地将额外的行为织入到代码中,而不需要修改原始代码。AOP的实现方式包括基于代理的方式和基于字节码增强的方式。AOP的原理是通过在目标方法的前后插入切面逻辑来实现。\[2\] 在Spring中,可以通过注解来标识切面,并通过注解来指定切入点和通知类型。常用的AOP注解包括@Aspect、@Pointcut、@Before、@After等。\[3\] 总结来说,DIIOCSpring框架中用于管理对象依赖关系的机制,而AOP是用于实现横切关注点的机制。它们都是Spring框架中重要的特性,可以帮助开发者更好地组织和管理代码。 #### 引用[.reference_title] - *1* [Spring IoCAOP的通俗理解](https://blog.csdn.net/qq_39144436/article/details/123394242)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [关于SpringIoCAOP的面试题,快看看你都能答上来哪些](https://blog.csdn.net/Gaowumao/article/details/124919483)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [面试汇总-Spring-IOCAOP](https://blog.csdn.net/weixin_37672801/article/details/126415598)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值