springReview_2021-10-11

IOC容器

控制反转,翻转资源获取方向
任何功能都基于IOC容器
DI:依赖注入
new ClassPathXmlApplicationContext:读取类路径下的XML文件创建IOC
new FileSystemXmlApplicationContext:读取文件系统路径的XML创建IOC

基于XML管理bean

获取bean
根据id获取
根据类型获取 .class
给bean赋值配置文件
	bean 
		property name value
	引入外部bean
		property name ref
	内部bean
引入外部属性文件
	<context:property-placeholder location="">
级联属性
	ref
构造器注入
	constructor value
bran的作用域
	scope IOC初始化时 默认
	prototype 获取bean

bean对象初始化之前的操作和之后的操作,由bean的后置处理器负责

基于注解管理bean

XML和注解只是告诉框架中的Java代码如何执行
@Component:普通组件
@Controller控制器组件
@Service业务逻辑组件
@Repository持久化层组件

扫描

<context:component-scan base-package="">
指定匹配模式	resource-pattern
排除要扫描的组件 
	context:exclude-filter type="annotation" expression=""
仅扫描的组件
	context:include-filter type="annotation" expression=""
beanName 
	组件首字母小写

自动装配

@Autowired
	@qualifier value=""
完全注解开发	
普通类使用@Configuration	
		@ConponentScan() //配置自动扫描的包
			@bean

整合junit4

加入依赖
	spring测试包  spring-test		
@RunWith(SpringJunit4ClassRunner.class)
@ContextConfiguration(value={".xml"})		

junit5

@SpringJUnitconfig(location={".xml"})

AOP面向切面编程

在不修改源代码的情况下增强代码功能()
解耦
采用代理模式
创建代理对象Proxy.newProxyInstance(,)
Lambda表达式:
1、复制小括号;2、写死右箭头;3、落地大括号
环绕通知:前置通知,核心操作,返回通知,异常通知,后置通知

基于注解的AOP

有接口的情况:动态代理(拜把子)
没有接口的情况cglib(认干爹)
1.依赖spring-aspect
2.创建切面类@Aspect
3.@Before,@AfterReturning,@AfterThrowing,@After(value = “execution”)
4.Spring配置文件
开启基于注解的AOP功能aop:aspectj-autoproxy
配置自动扫描的包
一个方法的全部声明信息
joinPoint.getSignature()
重用切入点表达式
@Poincut(“execution()”)
execution(* *…Service.(…))

切面的优先级

外(缓存切面)>内(事务切面)
应用了切面后,真正放在IOC容器中的代理类是对象

声明式事务

只需要声明需求,通过配置,让框架实现功能
事务管理器DataSourceTransactionManager
doBegin()开启事务
doSuspend()挂起事务
doResume()恢复挂起的事务
doCommit()提交事务
doRollback回滚事务

基于注解的声明式事务

1、加入依赖
org.springframework
	spring-context //
	spring-orm //持久层支持
	spring-test //测试
junit
	junit
mysql
	mysql-connector-java
com.alibaba
	druid
2、外部属性文件jdbc:properties
3、Spring配置文件
配置自动扫描的包
引入外部文件
配置数据源
配置jdbcTemplate
	装配数据源
4、配置事务管理器
<bean id="ransactionManager" class="*.DataSourceTransactionManager">
	<propertity name="" ref="">//只配置数据源
</bean>
开启事务管理器
<tx:annotation-drive transaction-manger="transactionManger">
加注解@Transaction
## 加入日志logback.xml
超时回滚,释放资源timeout= //以秒为单位
默认只在运行异常回滚
事务隔离级别
	读未提交isolation = Isolation.READ_UNCOMMITTED
	都已提交						.READ_COMMITTED
每次都会开启新事务
	propagation = Propagation.REQUIRES_NEW
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java程序世界的一员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值