蚂蚁课堂学习笔记之springAop和Ioc
第五节 注解
三层模式:Dao 层 Server层 和springtest;
入口是Service层,在xml中写<id=’Service ’ >
Spring IoC创建对象之----无参构造函数原理:xml文件里直接配置的是UserEntity类
(实体类,该实体类中有无参构造函数),<bean id=”userEntity” class=”com.itmayi.entity.UserEntity” ></bean>
那么在入口类(springText)类中加载过xml文件后就可以得到 经默认构造函数初始化后的bean对象了,下面就可以使用这个对象了。
带参构造函数原理:在实体类中构建有参的构造函数,在xml中和上面的无参的区别是要在xml中配置参数,<bean id=”userEntity” class=”com.itmayi.entity.UserEntity” >
<constructor-org name=”name” value=”wangchuan”></constructor-arg>
<constructor-org name=”age” value=”17”></constructor-arg>
</bean> //这样就给参数进行赋值!
工厂方法原理:
实例工厂:在实体类中再建一个工厂类,(里面有两种方法:实例方法和静态方法!),然后再xml中实例化工厂<bean id=”objectFactory” class=”com.itmayi.entity.objectFactory”></bean>
上面是配置好了工厂,如果要用工厂方法创建对象,那么接着下面来
<bean id=”getUserEntity” factory-bean=”objectFactory” factory-method=”getUserEntity”></bean>
//意思是使用上面的工厂objectFactory 的方法getUserEntity 来创建对象。
静态工厂:<bean id=”getStaticUserEntity” class=”com.itmayi.entity.objectFactory”>
Factory-method=”getStaticUserEntity”></bean>
//静态工厂方法可以直接用工厂的类标签(class)来配置
第五节:DI注入
属性方式注入(set方式注入):
此时要配置userservice的属性userDao(userDao在这里被引用)
Userservice中的UserDao要赋值!赋值时引用前面写的userDao,UserDao中要写set方法!
原理:使用set方法为对象注入属性,
P_name注入(p标签的方式)
<bean id=”userAction” class=”cn.itmayi.UserAction”
P:userDao-ref=”userDao”></bean>
原理:截取p标签后面的内容即:userDao 拿着这个内容去userService找有没有这个userDao的set方法,找到之后给userDao这个类赋值(userService中的userDao这个类
就有值了),p标签方法也是通过反射原理,也是通过set方法为UserDao赋值,
第八节:AOP
面向切面编程,应用场景在:权限、日志、控制
事物底层的实现原理用的就是AOP
代理设计模式:静态代理和动态代理(包括jdk动态代理和cglib动态代理)
静态代理与动态代理的区别:静态代理要继承代理类,动态代理不需要继承代理类;
Jdk代理和cglib代理的区别:(共同点都是不需要代理类)但是jdk使用反射而cglib使用asm,
而Spring AOP原理用的是cglib动态代理 ??
在service层定义一个AOP类,然后在AOP类中定义begin和commit方法,把AOP注入到UserDao这个bean中,或者使用注解@compoent注入到bean中,
@compoent
Public class AOP{
}
然后再UserDao中使用
Public class UserService{
@Resource
Private UserDao userdao;
@Autowired //使用这个注解就可以使用aop了,下面可以调用aop中的方法
Private Aop aop;
Public void add(){
Aop.begin(); //调用aop方法
UserDao.add();
Aop.commit();
}
}
//aop这种方式类似于静态代理,
第七节(下)
Spring boot 简化xml配置,全部用注解代替,而且是微服务架构模式;
首先在UserDao中使用@repository
@repository //专门注入标识注解Dao层,相当于<bean id=”userDao” class=””></bean>
Public class UserDao{
Public add(){ }
}
然后注入service层
@Service //通用在Service层 ,相当于<bean id=”userService” class=” ”>
Public class UserService{
}
下面是使用注解的方式 xml怎样写
<!—开启注解权限-->
<context:component-scan base-package=”com.itmayi”></context:compenent-scan>
开启注解后,在service层中 UserService类上面使用@Service注解就可以达到xml配置的效果;
在UserService类中UserDao 引用前面使用@Resource注解达到xml配置的效果。
@Resource 与@autowired的区别:
@Resource 是jdk1.6才有的,默认是以名称查找的,查不到之后再以类型查找,而且; 而@autowired是spring框架自带的,默认是以类型查找的,否则再以名称查找;
而maven工程默认的是jdk1.5,这个时候可以把1.5的jdk移出,然后导入workStation中的jdk(buildPath->library->移出旧的—>add新的);这时候导入javax.annotation.Resource包就可以使用@Resource。@Resource默认以属性名称userDao去找bean对象,
如果注解和xml同时重复使用来创建对象,那么先找的是xml的方式,如果xml走不下去就找注解。
第八节-AOP编程
AOP:面向切面编程,功能:就是把关注点代码(权限、日志)与业务代码(Dao层)分离,
关注点:重复代码就叫做关注点,
切面:关注点形成的类就叫做切面(类),
面向切面编程指的是: 对很多功能都有的重复的代码抽取,再在运行的时候往业务方法上动态的植入“切面类代码”
切入点:执行目标对象方法,动态植入切面代码。可以通过切入点表达式,指定拦截那些类的哪些方法;给指定的类在运行的时候植入切面类代码。(也就是UserDao)
通过注解方式实现AOP
首先在xml中开启aop注解
<aop:aspect-autoproxy></aop:aspect-autoproxy>
如果使用aop注解方法的话,UserService中就不会写之前的调用代码,然后是在AOP类前面加@Aspect注解,即
@Component 将切面注入到容器中
@Aspect //作用是标识为切面
Public class Aop{
//前置通知
@Before(“execution(*com.itmayi.service.UserService.add(..))”) //表示在方法之前执行;引用的UserService这个类的add方法,其他是固定格式。
//开启事物。。。。。
Public void begin(){};
}
//后置通知
@After(“execution(*com.itmayi.service.UserService.add(..))”)
//异常通知
@AfterThrowing(“execution(*com.itmayi.service.UserService.add(..))”)
Public void error(){
}
//表示如果有异常,就不会执行下面的函数。如果没有异常,它会在后置通知前执行,
@AfterReturning(“execution(*com.itmayi.service.UserService.add(..))”)
Public void run(){ }
//环绕通知
@Around(“execution(*com.itmayi.service.UserService.add(..))”)
Public void around(ProceedingJoinPoint proceedingJoinPoint){
System.out.println(“环绕通知之前”);
proceedingJoinPoin.proceed();
System.out.println(“环绕通知之后”);
}
这些通知的前后顺序:
环绕通知之前
前置通知
业务逻辑层
数据库访问层
运行通知
环绕通知之后
后置通知 事务管理
第九节:使用xml来配置AOP
<bean id=”aop” class=”com.itmayi.service.aop”></bean>
<aop:config>
<aop:pointcut expression=”execution(*com.itmayi.service.UserService.add(..))” id=”pt”> //定义切入点
<aop:aspect ref=”aop”>
<aop:after method=”commit” pointcut-ref=”pt”/> //这里是引用上面的切入点!
<aop:before method=”begin”/> //这些是定义规则
<aop:after-throwing method=”error”/>
<aop:after-returning method=”run”/>
<aop:around method=”around”/>
</aop:config>
蚂蚁课堂学习笔记之springAop和Ioc相关推荐
- 计算机网络微课堂 学习笔记
因有道云笔记转入csdn,图片无法加载,大家可进入笔记学习,链接如下: 有道云笔记地址:计算机网络微课堂 第一章 一.概述 1.1 计算机网络在信息时代的作用 计算机网络已由一种通信基础设施发展成 ...
- 【公司金融课堂学习笔记】1、企业融资—风险投资
作为一个IT人,有必要学习一点公司金融课,从本节开始,分享个人学习田教授课程课程笔记. [协作网络]风险投资:简称VC(Venture Capital),风险投资是一个金融中心,是打开社会网络的抓手. ...
- JQuery课堂学习笔记
版权声明:本文为博主原创文章,未经博主允许不得转载.更多学习资料请访问我爱科技论坛:www.52tech.tech https://blog.csdn.net/m0_37981569/article/ ...
- 燕十八PHP公益课堂学习笔记
<?php /**** 燕十八 公益PHP讲堂论 坛: http://www.zixue.it 微 博: http://weibo.com/Yshiba YY频道: 88354001 ****/ ...
- Java项目硅谷课堂学习笔记-P10-后台系统公众号部分
P10-后台系统公众号部分 1.公众号菜单管理 1.1创建模块service_wechat 1.2引入依赖 1.3生成菜单相关代码 1.4创建启动类和配置文件 1.4.1启动类 1.4.2配置文件 1 ...
- 【学习笔记】SpringAOP的用法全解
文章目录 Spring的AOP 一. Spring对AOP的实现包括以下3种方式 **什么是AspectJ?** 二.使用Spring的AOP 1.准备工作 2.尝试写一个简单的AOP demo 3. ...
- 今日课堂学习笔记01
离线编辑即页面在没有网络的情况下加载完成,就像软件,如手机的一些软件在没网的情况下界面也可以布局出来. 格式化标签 <b>字体加粗标签 <i>字体斜体标签 <sub> ...
- 【公司金融课堂学习笔记】2、企业融资—风投如何影响企业价值
一旦决定了要和风投合作,就意味着你将进入一场复杂而又微妙的动态博弈中.不但决定了企业的价值能不能最大化,甚至关系到企业的生死与存亡. 下面以对手.策略.时机这三个基本要素来详细拆解这场动态博弈. 选择 ...
- 数据分析算法-决策树(上)-课堂学习笔记
数据分析之决策树 决策树的工作原理 决策树基本上就是把我们以前的经验总结起来,我给你准备一个打篮球的训练集.如果我们要出门打篮球,一般会根据'天气'.'温度'.'湿度'.'刮风'这几个条件来判断,最后 ...
- 蚂蚁课堂视频笔记思维导图-3期 一、并发编程专题
在线地址:https://www.edrawsoft.cn/viewer/public/s/a09c4252911909 持续更新中-
最新文章
- css 浮动在最上层_CSS编码规范
- JAVA中String类的intern()方法的作用
- 设计模式-模版方法模式
- Linux启动时间的极限优化(Z)
- Java LineNumberReader getLineNumber()方法及示例
- (转)C#中的委托(Delegate)和事件(Event)
- linux系统支持最大内存,「Linux」- 查找系统支持的最大内存 @20210225
- yolo和mrcnn目标检测
- python实现kmeans图像分割、一只遥望大海的小狗_【Python】爬虫+ K-means 聚类分析电影海报主色...
- 【C语言代码写圣诞节程序】别再画圣诞树了,看都看腻了
- QRCode简单生成二维码
- python求周长_作业-python面向对象编程-计算周长和面积
- 论文阅读笔记 | Enemy At the Gateways:Censorship-Resilient Proxy Distribution Using Game Theory(NDSS 2019)
- 香港坚固金业的黑幕,属于非法投资平台。
- 以post的方式发请求,传参在url中
- t检验、方差分析、卡方检验统计量的构造
- Visual Basic 6.0编写简单网页浏览器
- 科大讯飞杯”第18届上海大学程序设计联赛(H dfs暴力) L、动物森友会 (网络流题 延伸题 E、Sunscreen)
- 建筑结构抗震分析之施加地震波的方法与理论机理
- 电子计算机技术文件检索,GB T 4967-1995_电子计算器通用技术条件_高清版_可检索.pdf-文档在线预览...