Spring

1、Spring

1.1、简介

1.2、优点

- Spring是一个开源的免费的框架(容器)!
- Spring是一个轻量级的、非入侵式的框架!
- 控制反转(IOC)、面向切面编程(AOP)
- 支持事务的处理,对框架整合的支持

总结一句话:Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架!

1.3、组成

1.4、拓展

现代化的JAVA开发说白了就是基于Spring的开发!
spring boot
- 一个快速开发的脚手架
- 基于spring boot可以快速开发单个微服务
- 约定大于配置
spring cloud
- spring cloud是基于spring boot实现的

2、IOC理论推导

IOC本质
控制反转实际上是一种设计思想,DI(依赖注入)是实现IOC的一种方法
控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是IOC容器,其实现方法是依赖注入(Dependency Injection,ID)

3、HelloSpring

我们彻底不用去程序中修改了,要实现不同的操作,只需要在xml配置文件中修改,所谓的IOC一句话搞定:对象由Spring来创建,管理,装配。

4、IOC创建对象的方式

  1. 使用无参构造创建对象,默认!
  2. 通过参数类型
  3. 通过参数名
    总结:在配置文件加载的时候,容器中管理的对象已经初始化了

5、Spring配置

5.1、别名

5.2、Bean的配置

5.3、import

6、依赖注入

6.1、构造器注入

6.2、Set方式注入

  • 依赖注入:Set注入
    • 依赖:bean对象的创建依赖于容器
    • 注入:bean对象中的所有属性,由容器注入

6.3、拓展方式注入

我们可以使用p命名空间和c命名空间进行注入
注意点:p命名和c命名空间不能直接使用,需要导入xml约束

6.4、bean的作用域

  1. 单例模式(Spring默认机制)
<bean id="user" class="com.cxh.pojo" c:age="18" c:name="C浩" scope="singleton"/>
  1. 原型模式:每次从容器中get的时候,都会产生一个新对象!
<bean id="user" class="com.cxh.pojo" c:age="18" c:name="C浩" scope="prototype"/>
  1. 其余的request、session、application,这些只能在web开发中使用到

7、Bean的自动装配

- 自动装配是Spring满足bean依赖的一种方式。
- Spring会在上下温中自动寻找,并自动给bean装配属性。

在Spring中有三种装配方式
1. 在xml中显示配置
2. 在Java中显示配置
3. 隐式的自动装配bean【重要】

7.1、byName自动装配

7.2、byType自动装配

7.4、使用注解实现自动装配

@Resource和@Autowired的区别
- 都是用来自动装配的,都可以放在属性字段上
- @Autowired通过byType的方式实现,要求这个对象必须存在
- @Resource默认通过byName方式实现,如果找不到,则通过byType方式实现,如果两个都找不到的情况下,就报错。

8、使用注解开发

  1. bean
  2. 属性如何注入
  3. 衍生注解
    @Component有几个衍生注解,我们在web开发中,会按照MVC三层架构分层
    - dao【@Repository】
    - service【@Service】
    - controller【@Controller】
    这四个类的作用都是一样的,都是代表将某个类注册到Spring中,装配bean
  4. 自动装配
  5. 作用域
    @Scope
  6. 小结
    xml与注解
    - xml更加万能,适用于任何场景,维护简单方便
    - 注解不是自己的类使用不了,维护相对复杂
    xml与注解的最佳实践
    - xml用来管理bean
    - 注解只负责完成属性的注入
    - 我们在使用的过程中,只需要注意一个问题:要让注解生效,就需要开启注解支持

9、使用Java的方式配置Spring

这种纯Java配置的方式,在Spring Boot中所处可见

10、代理模式

为什么学习代理模式,因为这是SprinAOP的底层
代理模式的分类
- 静态代理
- 动态代理

10.1、静态代理

角色分析
- 抽象角色:一般会使用接口或者抽象类来决解
- 真实角色:被代理的角色
- 代理角色:代理真是角色,代理真是角色后,我们一般会有一些附属操作
- 客户:访问代理对象的人
代理模式的好处
- 可以使真实角色的操作更加纯粹,不用去关注一些公共业务
- 公共业务交给代理角色,实现业务的分工
- 公共业务发生拓展时,方便集中管理
缺点
- 一个真实角色就会产生一个代理角色,代码量会翻倍,开发效率会降低

10.2、加深理解

10.3、动态代理

- 动态代理和静态代理角色一样
- 动态代理的代理类是动态生成的,不是我们直接写好的
- 动态代理分为两大类:基于接口的动态代理,基于类的动态代理
	- 基于接口:JDK动态代理
	- 基于类:cglib
	- java字节码实现:javasist

11、AOP

11.1、什么是AOP

11.2、AOP在Spring中的作用

即AOP在不改变原有代码的情况下,去增加新功能

11.3、使用Spring去实现AOP

方式一:使用Spring的API接口
方式二:自定义来实现AOP【主要是切面定义】
方式三:使用注解实现

12、整合Mybatis

步骤:
1. 导入相关jar包
- junit
- mybatis
- mysql数据库
- spring相关
- aop植入
- mybatis-spring
2. 编写配置文件
3. 测试

12.1、回顾mybatis

1. 编写实体类
2. 编写核心配置文件
3. 编写接口
4. 编写Mapper.xml
5. 测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值