SSM框架学习总结之路(六)

AOP

  • 1.AOP:中文名称面向切面编程
  • 2.英文名称:(Aspect Oriented Programming)
  • 3.正常程序执行流程都是纵向执行流程
    • 3.1 又叫面向切面编程,在原有纵向执行流程中添加横切面
    • 3.2 不需要修改原有程序代码
      • 3.2.1 高扩展性
      • 3.2.2 原有功能相当于释放了部分逻辑.让职责更加明确.
  • 4.面向切面编程是什么?
    • 4.1 在程序原有纵向执行流程中,针对某一个或某一些方法添加通知,形成横切面过程就叫做面向切面编程.
  • 5.spring 提供了 2 种 AOP 实现方式
    • 5.1Schema-based
      • 5.1.1 每个通知都需要实现接口或类
      • 5.1.2 配置 spring 配置文件时在aop:config配置
    • 5.2AspectJ
      • 5.2.1 每个通知不需要实现接口或类
      • 5.2.2 配置 spring 配置文件是在 < aop:config >的子标签< aop:aspect >中配置

使用注解(基于 Aspect)

  1. spring 不会自动去寻找注解,必须告诉 spring 哪些包下的类中可能有注解
    • 引入 xmlns:context
<context:component-scan base-package="com.yueyue.advice"></context:component-scan>
  1. @Component
    2.1 相当于
    2.2 如果没有参数,把类名首字母变小写,相当于<beanid=””/>
    2.3@Component(“自定义名称”)
  2. 实现步骤:
    3.1 在 spring 配置文件中设置注解在哪些包中
<context:component-scan base-package="com.yueyue.advice,com.yueyue.test">
</cont ext:component-scan>
  • 3.2 在 Demo 类中添加@Componet
  • 3.2.1 在方法上添加@Pointcut(“”) 定义切点
@Component
 public class Demo {
 @Pointcut("execution(* com.yueyue.test.Demo.demo1())") 
 public void demo1() throws Exception{
  System.out.println("demo1"); 
  }
}
  • 3.3 在通知类中配置
    • 3.3.1@Component 类被 spring 管理
    • 3.3.2@Aspect 相当于<aop:aspect/ >表示通知方法在当前类中
@Component 
@Aspect 
public class MyAdvice { 
@Before("com.yueyue.test.Demo.demo1()") 
public void mybefore(){ 
System.out.println("前置");
} 
 @After("com.yueyue.test.Demo.demo1()") 
 public void myafter(){ 
 System.out.println("后置通知"); 
 } 
 @AfterThrowing("com.yueyue.test.Demo.demo1()") 
 public void mythrow(){ 
 System.out.println("异常通知"); 
 } 
 @Around("com.yueyue.test.Demo.demo1()") 
 public Object myarround(ProceedingJoinPoint p) throws Throwable{ System.out.println("环绕-前置");
Object result = p.proceed(); 
System.out.println("环绕-后置"); 
return result;
}
}

cglib 动态代理

  1. cglib 优点:
    1.1 基于字节码,生成真实对象的子类.
    1.1.1 运行效率高于 JDK 动态代理.
    1.2 不需要实现接口
  2. cglib 缺点:
    2.1 非 JDK 功能,需要额外导入 jar
  3. 使用 springaop 时,只要出现 Proxy 和真实对象转换异常
    3.1 设置为 true 使用 cglib
    3.2 设置为 false 使用 jdk(默认值)
<aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>

spring中加载properties文件

1.在src下新建xxx.properties文件
2. 在 spring 配置文件中先引入 xmlns:context,在下面添加

<context:property-placeholder location="classpath:db.properties"/>

  1. 在被Spring管理的类中通过@Value(“${key}”)取出properties中内容
    3.1添加注解扫描
<context:component-scan 
base-package="com.yueyue.service.impl"></context:compo nent-scan>

3.2 在类中添加
3.2.1key 和变量名可以不相同
3.2.2 变量类型任意,只要保证 key 对应的 value 能转换成这个类型就可以.

@Value("${demo}") 
private String test;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java SSM(Spring+SpringMVC+MyBatis)是一种基于Java语言的Web开发框架学习这个框架的过程中,我深刻体会到它的强大和灵活性。 首先,Spring框架为开发者提供了一个强大的IOC(Inversion of Control)容器,它能够管理和注入对象,减少了代码之间的耦合性。通过配置文件或注解,我们可以轻松地定义和获取各种对象,提高了代码的可维护性和可扩展性。 其次,SpringMVC框架是一种MVC(Model-View-Controller)设计模式的实现,它用于处理Web请求和响应。通过配置一个请求映射表和处理器,我们可以将请求分发给相应的控制器进行处理,并将处理结果返回给客户端。SpringMVC还提供了一些便捷的注解和标签,用于简化页面的渲染和参数的绑定。 最后,MyBatis是一种优秀的持久化框架,它能够将数据库操作与Java对象之间的映射简化为简单的配置。通过编写SQL映射文件和定义POJO(Plain Old Java Object)类,我们可以方便地进行数据库的增删改查操作,而无需编写冗长的SQL语句。 在学习Java SSM框架的过程中,我深入理解了软件开发过程中的MVC思想,并学会了如何利用Spring、SpringMVC和MyBatis来实现一个完整的Web应用程序。通过不断的实践和调试,我逐渐培养了自己解决问题和调试代码的能力。 总结起来,学习Java SSM框架使我深入理解了软件开发的各个环节,并提升了我的编码能力和开发效率。我相信这些知识和经验将对我的职业发展和项目实施起到积极的促进作用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值