SpringIOC和AOP介绍

Posted 胖子江.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringIOC和AOP介绍相关的知识,希望对你有一定的参考价值。

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

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

全网首发!java将内容写入文件

Spirng IOC

1.Spring框架

2.Spring IOC 容器 Bean 对象实例化模拟

3.Spring IOC 配置文件加载

4.Spring IOC 容器 Bean 对象实例化

5.Spring IOC 注入

6.Spring IOC 扫描器

7.Bean的作用域与生命周期

Spirng AOP核心组件分析

Spring IOC+AOP源码笔记

1.Spring入门和IOC介绍

2.对象依赖

3.AOP入门

4.JDBCTemplate和Spring事务

5.Spring事务原理

6.Spring事务的一个线程安全问题

7.IOC再回顾以及我常问的面试题

8.AOP再回顾

Spring源码学习总结(篇幅有限)

Spring MVC

Spring Boot

Spring Cloud Alibaba

Spring Cloud(篇幅有限)

各类脑图

1.Spring

2.Spring Cloud

3.Spring Boot

最后

如何获取免费架构学习资料?

资料获取方式:点击下方蓝色传送门

Java学习、面试;文档、视频资源免费获取

由于篇幅原因,就不多做展示了
mg-ZXFrT8oU-1625668923249)]

[外链图片转存中…(img-1W4NsDlO-1625668923250)]

[外链图片转存中…(img-hQ56d7Q9-1625668923251)]

由于篇幅原因,就不多做展示了

以上是关于SpringIOC和AOP介绍的主要内容,如果未能解决你的问题,请参考以下文章

Java技术篇!阿里java面试宝典

java主流框架ssm,附带学习经验

十年Java编程开发生涯,java获取数组最大值的函数

java数组赋值给另一个数组,2021最新版!

Java自学!spring-kafka监听器不好使

Java开发需要学什么!在java中创建线程有几种方法