Spring笔记整合

Spring的优点

1.Spring是一个轻量级的,非侵入式的框架

2.两个核心内容:控制反转(IOC)和面向切面(AOP)

3.支持事务的处理,对框架整合的支持

Spring总结:Spring就是一个轻量级的控制反转和面向切面的框架,是一个开源的轻量级的一站式框架

IOC本质:

控制反转是一种设计思想,DI(依赖注入)是实现IOC的一种方法,就是将对象的创建权交给spring容器去做,其实现的方法是依赖注入。

IOC创建对象的方式:

1.构造方法的注入

2.Set方式注入【重点】

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

3.p名称空间的注入

 注入对象类型的属性:

private Car2 car2;

 注入数组类型:

 

 总结:在配置文件加载的时候 ,容器中管理的对象就已经初始化了!

Spring的配置:

Bean的配置:

 import的使用:

这个import。一般用于团队开发使用,它可以将多个配置文件,导入合并为一个。
假设,现在项目中有多个人开发,这三个人负责不同的类开发,不同的类需要注册在不同的bean中,我们可以利用import将所有人的beans.xml合并为一个总的!

 

使用的时候直接使用总配置就可以了

Bean的作用域

 Bean的自动装配

1.自动装配是Spring满足bean依赖的一种方式

2.Spring会在上下文中自动寻找,并自动给bean装配属性

在Spring中有三种装配的方式:

1.在xml中显示的配置

2.在Java中显示配置

3.隐式的自动装配bean

使用注解开发

<!--spring的ioc的注解入门-->

<!--使用IOc的注解开发,配置扫描(那些包下的类要使用Ioc的注解)-->

<!--开启了Ioc的注解--> <!--扫描是为了扫描类上的注解@component-->

<!-- <context:component-scan base-package="com.qy.springdemo1"/>

<context:component-scan base-package="com.qy.springdemo2"/>-->

<!--<context:component-scan base-package="com.qy"/>-->

<!--在没有扫描的情况下,使用属性注入的注解-->

<context:annotation-config/>

spring配置注解context:annotation-config和context:component-scan区别

假如我们要使用如@Component、@Controller、@Service等这些注解,使用能否激活这些注解呢?

答案:单纯使用< context:annotation-config/>对上面这些注解无效,不能激活!

(1)< context:annotation-config />:仅能够在已经在已经注册过的bean上面起作用。对于没有在spring容器中注册的bean,它并不能执行任何操作。 
(2)< context:component-scan base-package="XX.XX"/> :除了具有上面的功能之外,还具有自动将带有@component,@service,@Repository等注解的对象注册到spring容器中的功能。 

思考2:如果同时使用这两个配置会不会出现重复注入的情况呢?

答案:因为< context:annotation-config />和 < context:component-scan>同时存在的时候,前者会被忽略。如@autowire,@resource等注入注解只会被注入一次!

@component有几个衍生注解:

                1、@controller:   controller控制器层(注入服务)
                2、@service :      service服务层(注入dao)
                3、@repository :  dao持久层(实现dao访问)

自动装配

小结:

@Resource和@Autowired的区别:

都是用来自动装配的,都可以放在属性字段上
@Autowired通过byType的方式实现,而且必须要求这个对象存在!【常用】
@Resource默认通过byName的方式实现,如果找不到名字,则通过byType实现!如果两个都找不到的情况下,就报错!【常用】
执行顺序不同:@Autowired通过byType的方式实现。

xml与注解最佳实践:
xml用来管理bean;
注解只负责完成属性的注入;
我们在使用的过程中,只需要注意一个问题:必须让注解生效,就需要开启注解的支持

代理模式

代理模式的分类:

        1.静态代理

        2.动态代理AOP

  • 动态代理和静态代理角色一样
  • 动态代理的代理类是动态生成的,不是我们直接写好的!
  • 动态代理分为两大类:基于接口的动态代理,基于类的动态代理
    • 基于接口 — JDK动态代理【我们在这里使用】
    • 基于类:cglib

什么是AOP

Aop即面向切面,使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

 AOP在Spring中的作用
提供声明式事务;允许用户自定义切面

横切关注点:跨越应用程序多个模块的方法或功能。即是,与我们业务逻辑无关的,但是我们需要关注的部分,就是横切关注点。如日志,安全,缓存,事务等等…
切面(ASPECT):横切关注点被模块化的特殊对象。即,它是一个类。
通知(Advice):切面必须要完成的工作。即,它是类中的一个方法。
目标(Target):被通知对象。
代理(Proxy):向目标对象应用通知之后创建的对象。
切入点(PointCut):切面通知执行的“地点”的定义。
连接点(JointPoint):与切入点匹配的执行点。
SpringAOP中,通过Advice定义横切逻辑,Spring中支持5种类型的Advice:

前置通知:                    方法之前

环绕通知                        方法前后

异常抛出通知                 方法抛出异常

后置通知:                    方法之后

最终通知                        方法最后


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

XMl的方法去实现

Dao接口

 实现类

 切面类

xml配置:

测试:

 注解的方法去实现

xml方法

 

声明式事务
13.1 回顾事务
把一组业务当成一个业务来做;要么都成功,要么都失败!
事务在项目开发中,十分的重要,涉及到数据的一致性问题,不能马虎!
确保完整性和一致性。
事务ACID原则:

原子性(atomicity)
事务是原子性操作,由一系列动作组成,事务的原子性确保动作要么全部完成,要么完全不起作用。
一致性(consistency)
一旦所有事务动作完成,事务就要被提交。数据和资源处于一种满足业务规则的一致性状态中。
隔离性(isolation)
可能多个事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。
持久性(durability)
事务一旦完成,无论系统发生什么错误,结果都不会受到影响。通常情况下,事务的结果被写到持久化存储器中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值