IoC: annotation

AOP: XML

XML比annotation用的多.

beans.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-2.5.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-2.5.xsd"><context:annotation-config /><context:component-scan base-package="com.bjsxt"/><bean id="logInterceptor" class="com.bjsxt.aop.LogInterceptor"></bean><aop:config>       <aop:aspect id="logAspect" ref="logInterceptor"><aop:before method="before" pointcut="execution(public * com.bjsxt.service..*.add(..))" /></aop:aspect></aop:config>
</beans>

LogInterceptor.java:

package com.bjsxt.aop;import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;//@Aspect
//@Component
public class LogInterceptor {//@Pointcut("execution(public * com.bjsxt.service..*.add(..))")public void myMethod(){};//@Before("myMethod()")public void before() {System.out.println("method before");}//@Around("myMethod()")public void aroundMethod(ProceedingJoinPoint pjp) throws Throwable {System.out.println("method around start");pjp.proceed();System.out.println("method around end");}}

UserServiceTest.java:

package com.bjsxt.service;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.bjsxt.model.User;//Dependency Injection
//Inverse of Control
public class UserServiceTest {@Test public void testAdd() throws Exception {ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");UserService service = (UserService)ctx.getBean("userService");System.out.println(service.getClass());service.add(new User());ctx.destroy();}
}

  

UserService.java:

package com.bjsxt.service;
import javax.annotation.Resource;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;import com.bjsxt.dao.UserDAO;
import com.bjsxt.model.User;@Component("userService")
public class UserService {private UserDAO userDAO;  public void init() {System.out.println("init");}public void add(User user) {userDAO.save(user);}public UserDAO getUserDAO() {return userDAO;} @Resource(name="u")public void setUserDAO( UserDAO userDAO) {this.userDAO = userDAO;}  public void destroy() {System.out.println("destroy");}
}

  

UserDAOImpl.java:

package com.bjsxt.dao.impl;import org.springframework.stereotype.Component;import com.bjsxt.dao.UserDAO;
import com.bjsxt.model.User;@Component("u")
public class UserDAOImpl implements UserDAO {public void save(User user) {//Hibernate//JDBC//XML//NetWorkSystem.out.println("user saved!");//throw new RuntimeException("exeption!");}}

UserDAO.java:

package com.bjsxt.dao;
import com.bjsxt.model.User;public interface UserDAO {public void save(User user);
}

User.java:

package com.bjsxt.model;public class User {private String username;private String password;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}

  

XML方式好? annotation方式好?

XML必须掌握, 因为 

  

---恢复内容结束---

转载于:https://www.cnblogs.com/wujixing/p/5462160.html

Sping--AOP--XML相关推荐

  1. Spring AOP XML配置及注解配置

    一.XML配置切面类 1.日志切面类 //切面类注解配置加两个注解 @Aspect @Component public class LoggerAspect {public Object log(Pr ...

  2. spring aop xml事务配置

    <aop:config> <!-- 通过aop定义事务增强切面--><aop:pointcut id="serviceMethod" expressi ...

  3. java aop xml配置_spring AOP使用 xml配置

    目前有一个业务层的类,我想要监控业务层这个类里面的某些方法.把其中的一些操作记录到一个log表中,但是又不想侵入代码,所以采用切面来完成 一.首先记录log的类: packagecom.aoptest ...

  4. xml的方式配置AOP:Aspect Oriented Programming

    在某些类中, 什么时机, 做什么事情  切入点(point-cut): 在某些类中(Class<?>[] itfc = new Class<?>[] { IStudentSer ...

  5. Spring AOP(三)--XML方式实现

    本文介绍通过XML方式实现Spring AOP,在上一篇中已经介绍了通过注解+java配置的方式,这篇文章主要是看XML中怎么配置,直接上代码了: 一.创建一个连接点 1⃣️定义接口 注意⚠️:可以定 ...

  6. Spring AOP示例教程 - Aspect,Advice,Pointcut,JoinPoint,Annotations,XML Configuration

    Spring AOP示例教程 - Aspect,Advice,Pointcut,JoinPoint,Annotations,XML Configuration Spring Framework是基于两 ...

  7. aop中joinpoint_Spring AOP示例教程–方面,建议,切入点,JoinPoint,注释,XML配置...

    aop中joinpoint Spring Framework is developed on two core concepts – Dependency Injection and Aspect O ...

  8. SSM3==理解静态代理、动态代理Proxy.newProxyInstance、cglib代理==通过纯XML配置spring AOP,通过纯注解配置spring AOP

    静态代理: 为什么要代理?在不改动原代码的基础上,丰富调用某个方法时实现的功能. 比如service类中原本update只会更新,但是通过代理类加上了判断权限和输出时间的功能. 其实这些功能也可以写在 ...

  9. spring学习总结(十):基于 XML 的配置AOP

    基于 XML 的配置声明AOP 除了使用 AspectJ 注解声明切面, Spring 也支持在 Bean 配置文件中声明切面. 这种声明是通过 aop schema 中的 XML 元素完成的. 正常 ...

  10. 跟着小马哥学系列之 Spring AOP(基于 XML 定义 Advice 源码解析)

    学好路更宽,钱多少加班. --小马哥 简介 大家好,我是小马哥成千上万粉丝中的一员!2019年8月有幸在叩丁狼教育举办的猿圈活动中知道有这么一位大咖,从此结下了不解之缘!此系列在多次学习极客时间< ...

最新文章

  1. Squid如何提高命中率
  2. 来自顶尖JAVA程序猿的焦虑,拒绝中年危机,唯有一生力学笃行
  3. 解决AttributeError: XXX instance has no attribute ‘xxx‘的问题(新手必备)
  4. java ee s2sh复习题_JavaEESSH框架答案试题题目及答案,期末考试题库,章节测验答案...
  5. Git的sourcetree找不到git
  6. sql server express 并发数的限制_阿里数据库性能诊断的利器——SQL执行干预
  7. 搞定Linux Shell文本处理工具,看完这篇集锦就够了(转)
  8. python高阶函数、map reduce 自己如何去定义_小猿圈python之高阶函数lambda、map和reduce用法...
  9. 一文快速掌握IPv6基础知识及使用指南
  10. php 微信时间戳转换工具,微信小程序时间戳转换
  11. HttpClient 解释
  12. android 选择 播放器,Android 播放--播放器里面 demo 类的说明与选择
  13. 网易详述8个月全过程:员工申请仲裁要求支付61万赔偿
  14. 怎么样域名绑定服务器显示成功,域名备案成功后怎么绑定服务器
  15. Centos6 yum源设置
  16. 【腾讯BUG】QQ群贴超大表情BUG,恶意炸群BUG
  17. nuscenes instance 调研笔记
  18. Android 天气APP(六)旋转风车显示风力、风向
  19. Android笔记:Zing二维码扫描解决二维码被拉伸
  20. ppt版的pdf文件,被加密,知晓密码,想得到去水印后的ppt

热门文章

  1. Vue中常用的组件传值方式
  2. Asp.Net中WebApi多图片上传(附前后端代码)
  3. PHP数组键不存在给默认值
  4. 全网首发:制作LINUX安装软件包,要处理哪些系统目录和文件(1)
  5. maven打包时加入依赖jar包
  6. 管理新语:会议与问题的关系
  7. 编程基本功:代码都写不好,还写什么注释
  8. 解决办法:用户名不在 sudoers文件中 此事将被报告
  9. LINUX开机自启问题
  10. The NVIDIA driver on your system is too old (found version 9000).