Spring学习笔记

1.在使用对象时,在程序中不要主动使用new产生对象,转为外部提供对象

2.创建控制权转移到外部,这种思想--IOC控制反转

spring 提供容器,IOC容器,用来充当IOC思想的外部

IOC容器负责对象创建,初始化,这些对象叫bean

3.DI依赖注入

在容器中建立bean 与bean之间依赖关系的过程

最终效果:

使用对象时不仅可以直接从IOC中获取,并且获取到bean已经绑定了的所有依赖关系

IOC入门案例:

1.先导入spring坐标,导入一个包,才能新建xml文件

2.定义spring 管理的类(接口)

3.创建s理的bepring配置文件的类,配置对应类作为spring管an

4.初始化IOC容器

5.获取资源

DI入门案例

1.IOC容器管着bean

2.service中使用new形式创建的Dao对象是否保留

3.service中需要的Dao对象怎么进service

4.service与dao之间的关系如何描述

1.删除业务层中service(java文件)中的new的方式创建的dao对象

2.提供依赖对象对应的setter方法

3.在xml中配置service与dao之间的关系

property标签表示配置当前bean的属性   ref属性表示参考哪一个bean 同文件的

Bean别名

1.可以定义多个,用‘,’分割

2.报错:nosuchdefinitionexception无法获取bean

3.默认是单例,可以重复使用 适合:表现层/业务层/数据层/工具对象 不适合 封装实体

实例化bean

无参方法不存在,将抛出异常BeanCreationException

依赖注入

setter注入--引用类型

构造器注入

依赖自动装配

IOC容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配

不能装配简单类,只能对引用类型

推荐按类型装配 byType

加载properties文件

1.xml文件中开启命名空间,复制一份出来bean改contex

2.使用context命名空间,加载指定的propertieswenjian

3.使用${}读取加载的属性值

4:system-properties-mode="NEVER" 就不会和系统冲突,系统优先级更高

按照bean类型获取bean只能对应一个,否则会报错

 注解开发

1.在service层的java文件使用@Compoent定义bean

1:@Component
    代替Spring-application.xml核心配置文件中的<bean>标签中的类

2.在核心配置文件中通过组件扫描加载bean

 @Controller、@Service、@Repository是@Component的衍生注解
   
   @Contorller:用于表现层bean定义
   @Service:用于业务层bean定义
   @Repository:用于数据层bean定义

 纯注解开发

Spring3.0开启了纯注解开发模式,使用java类代替配置文件,开启了Spring快速开发赛道

 

 1.自动装配基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据,因此无需提供     2.setter方法自动装配建议使用无参构造方法创建对象(默认),如果不提供对应构造方法,请提供唯一的构造方法

使用@Value可以进行简单类型注入

加载properties文件可以用

@PropertySource注解

@Configuration
@ComponentScan("com.itheima")
@PropertySource({"jdbc.properties"})

第三方bean管理 

1.@Bean

2.第三方bean依赖注入

1.引用类型:方法形参

2.简单类型:成员变量

 XML配置与比对注释配置

Spring整合MyBatis

 mybatis管理sqlsessionfactory

 Spring整合MyBatis

Spring整合JUnit

domain层是干嘛的

AOP

面向切面编程

在不惊动原始设计的基础上为其进行功能增强

spring理念:无侵入式

连接点:所有方法

切入点:哪些方法需要追加功能的,匹配通知的方法,叫切入点

通知:各个方法共用的功能,叫通知。通知存在于通知类中。

切面:切面描述的是通知共用的功能与所对应切入点的关系。在哪些切入点上执行哪些通知叫切面

 spring入门案例

AOP编程思想

 AOP工作流程

AOP核心概念
1.目标对象(Target )∶原始功能去掉共性功能对应的类产生的对象,这种对象是无法直接完成最终工作的

2.代理(Proxy )︰目标对象无法直接完成工作,需要对其进行功能回填
,通过原始对象的代理对象实现
 

image.png

image.png

 AOP切入点表达式

 AOP通知类型

写一个通知类的步骤


1: @Component
2: @Aspect
定义的一个通知类

3: @Ponitcut("execution(返回值类型 包.方法(参数))")
定义的通知空方法

4:@Around("类名.通知空方法()")
定义加强的通知方法
public Object runSpeed(ProceedingJoinPoint pjp){
    
    Objection ret = pjp.proceed();
    return ret;
}

案例-业务层接口执行效率

为了获得当前执行谁,需要

//获取执行的签名对象
Signature signature = pjp.getSignature();

String className=sighnture.getDeclaringTypeName();

 AOP通知获取数据

获取参数,获取返回值,获取异常

Spring事务简介

Spring开启事务,使用注解版本,需要三步
1:定义的service接口的方法,添加@Transactional注解
2:在jdbcConfig.java配置类中,设置事务管理器 DataSourseTransactionManager
3:在SpringConfig.java中,开启注解式事务驱动。@EnableTransactionManagement

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值