首页IT科技spring中ioc和aop(SpringIOC和AOP介绍)

spring中ioc和aop(SpringIOC和AOP介绍)

时间2025-08-04 16:18:31分类IT科技浏览4612
导读:Spring介绍 1.spring是轻量级的开源的JavaEE框架...

Spring介绍

1.spring是轻量级的开源的JavaEE框架

2.Spring可以解决企业应用开发的复杂性

3.Spring有两个核心部分:IOC               、AOP

​ (1)IOC:控制反转               ,把创建好的对象给Spring进行管理

​ (2)AOP:面向切面编程                      ,不修改源代码的情况下进行功能增加               。

Spring特点

1.方便解耦        ,简化开发                       。

2.AOP支持

3.方便程序测试

4.方便和其他框架整合

​ 6.降低了API开发难度

IOC

IOC底层原理和基本概念

inversion for control 控制反转       。把对象创建和对象之间的调用过程               ,交给spring进行管理       。

使用目的:为了耦合度降低                       。

耦合度:也就是两个方法之间的关联程度                      ,越小越好               。

类似于图下        ,如果我去修改了UserDao中的add方法       ,那么Service层中的方法也需要去修改       。 但是当我们去使用了工厂模式                      ,就会去降低耦合度                      。

ioc接口 BeanFactory

​ 1                      、Ioc思想基于IOC容器完成               ,ioc就是对象工厂               。

​ 2        、spring提供ioc容器实现两种方式:(功能相似)

​ (1)**.beanFactory**:ioc容器基本实现       ,是spring自带 内部使用的                      ,不提供给开发人员使用。

​ * 加载配置文件的时候               ,不会去创建对象                      。在获取对象(使用)才去创建对象                      。 什么时候用 什么时候创建对象。

(2)ApplicationContext:是BeanFactory接口的子接口,提供更强大的功能                      ,由开发人员使用               。

​ * 加载配置文件的时候                      ,就会去创建对象                      。

常见的依赖注入三种方式

1               、set方法进行注入

(在bean中创建属性和创建set方法)

​ 1.创建类,生成属性的set方法

​ 2.在配置文件中创建对象               ,后使用set方法注入属性

 <bean id="book" class="com.cztu.tdj.spring5.Book">         <property name="bname" value="tdj"></property>         <property name="bauthor" value="javaSpring"></property>     </bean>

2                      、使用有参构造进行注入

(1)创建类                      ,定义属性        ,创建属性的有参构造

(2)在spring的配置文件中注入

    <bean id="orders" class="com.cztu.tdj.spring5.Orders">         <constructor-arg name="oname" value="拼多多"></constructor-arg>         <constructor-arg name="address" value="120"></constructor-arg>                  //也可以基于index属性注入               ,0代表有参构造第一个属性         <constructor-arg index=1 value="120"></constructor-arg>     </bean>

使用注解test时                      ,类必须为public        ,方法也必须是public!!!

3        、p名称空间注入

(1)使用p名称空间注入       ,可以简化基于xml配置方式

1添加p名称空间在配置文件中       xmlns:p="http://www.springframework.org/schema/p" 2使用set方法注入 <bean id="book" class="com.cztu.tdj.spring5.Book" p:bauthor="汤冬江" p:bname="javapy"/>

Bean管理(FactoryBean)

1       、Spring有两种类型Bean                      ,一中普通bean               ,还有一种是工厂bean       。

2.普通bean:在配置文件中       ,定义的类型就是返回的类型               。**

3.工厂bean:在配置文件中                      ,定义的类型可以和返回类型不一样                       。

bean作用域:

prototype                      、singleton               、session       、request

singleton 和prototype区别:

(1)singleton是单实例               ,prototype 是多实例对象

(2)设置scpe值为singleton时,加载spring配置文件时会创建单实例对象       。

(3)设置scpe值为prototype时                      ,不是加载spring配置文件时会创建实例对象                      ,而是用getBean时才去创建对象

Spring针对bean管理中创建对象提供注解**

(1)@Component

(2)@Service

(3)@controller

(4)@Repository

功能一样,都是创建bean实例       。但是他们用到不同地方                       。

AOP

AOP:面向切面编程                。不通过修改源代码的方式               ,在主干功能里添加新功能       。

aop底层原理

1                      、aop底层使用了动态代理

(1)有两种情况的动态代理:

​ 1               、有接口的情况                      ,使用jdk动态代理

​ ·创建接口实现类对象        ,去增强类中的方法

2、没有接口的情况               ,使用CGLIB动态代理

​ 创建子类的代理对象                      ,去增强类中的方法

aop动态代理实现(jdk)

1                      、使用jdk动态代理        ,使用Proxy类里的方法创建代理对象

newProxyInstance其中的三个参数:(1)类加载器;(2)增强方法的所在类       ,这个类实现的接口                      ,支持多个接口;(3)实现这个接口InvocationHandler               ,创建代理对象       ,写增强的方法

2                      、jdk动态代理代码

(1)创建接口                      ,定义方法

(2)创建接口实现类               ,实现方法

(3)使用proxy类c

基于匿名内部类实现接口;

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
vue do not use built-in(【Vue】Cannot set reactive property on undefined,null,or primitive value:undefined) 乔安客户端(乔安CMS——让您的网站轻松建设)