一。配置服务类组件
@Component
public class UserService {
private UserDAO userDAO;
public void add(User u){
this.userDAO.save(u);
}
public UserDAO getUserDAO() {
return userDAO;
}
@Resource(name="userDAOImpl")
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
}
@Resource自动装配
二。配置applicationContext.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/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 配置自动装配 AutowiredAnnotationBeanPostProcessor等接口,实现注入等功能 -->
<context:annotation-config/>
<!-- 配置扫描包路径 -->
<context:component-scan base-package="com.job"/>
<!-- 声明一个类 -->
<bean id="LogInteceptor" class="com.job.aop.LogInteceptor"></bean>
<aop:config>
<!-- 声明一个全局切点 ,id为切点id,expression作用到类的什么方法-->
<aop:pointcut id="servicePointcut" expression="execution (public * com.job..*.add(..))"/>
<!-- 声明一个切面,id为切面id,ref表示这个类为切面类 -->
<aop:aspect id="logAspect" ref="LogInteceptor">
<!-- pointcut-ref切点执行,method作用切面类中的方法 -->
<aop:before method="beforeMethod" pointcut-ref="servicePointcut"/>
</aop:aspect>
<!-- 另一种写法,声明一个私有切点-->
<!-- id切面id,ref声明切面类 -->
<aop:aspect id="logaspect2" ref="LogInteceptor">
<!-- method切面类中方法 pointcut作用到类的什么方法 -->
<aop:before method="beforeMethod" pointcut="execution (public * com.job..*.add(..))" />
</aop:aspect>
</aop:config>
</beans>
三。编写切面类
public class LogInteceptor {
public void beforeMethod(){
System.out.println("Method start!");
}
}
四。测试
public class UserServiceTest {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
Service service = (Service)ac.getBean("userService");
User u = new User();
u.setUsername("me haha ");
service.add(u);
}
}
五。测试结果
Method start!
me haha ---haha!
分享到:
相关推荐
在实际的`spring_aop_xml`压缩包中,应该包含了相关的XML配置文件、服务接口及其实现类、通知类等,通过这些文件可以更好地理解和学习如何在XML中配置和使用Spring AOP。通过深入学习和实践,你将能熟练掌握这一强大...
6. Spring_AOP_XMLDefine:这部分可能讲解了如何通过XML配置文件定义和实现AOP切面。 7. Spring_AOP_AspectJDefine:可能涉及到使用AspectJ的语法和规则来定义切面。 掌握Spring AOP,需要理解上述概念,并通过实践...
在Spring 2.0及更高版本中,推荐使用AspectJ注解或XML配置定义切入点表达式。 总结,Spring AOP提供了一种优雅的方式,让我们能够分离关注点,实现代码的模块化,提高可维护性和复用性。理解并熟练运用这些概念和...
本实践项目“Spring_aop_xml.zip”以XML配置方式展示了如何在实际应用中运用Spring AOP。 首先,让我们深入了解Spring AOP的核心概念。AOP通过切面(Aspect)来组织代码,切面是关注点的模块化,这些关注点通常涉及...
**Spring AOP XML配置**是Spring框架中一种重要的面向切面编程(Aspect-Oriented Programming,简称AOP)实现方式,允许开发者定义“横切关注点”,如日志、事务管理等,这些关注点可以独立于业务代码进行,提高代码...
Spring提供了注解驱动的AOP,使得无需编写XML配置文件即可声明切面。 在“spring_aop1.rar”中,我们可以预期找到以下几个关键知识点: 1. **切点注解**:例如`@Before`、`@After`、`@Around`、`@AfterReturning`...
XML配置是Spring AOP早期常用的一种配置方式,虽然在Spring 4.3之后推荐使用注解式AOP,但理解XML配置对于深入学习AOP仍然很有帮助。下面我们将详细讨论如何通过XML配置实现Spring AOP。 首先,我们需要在Spring...
在Spring框架早期,AOP的配置主要通过XML来进行。以下是一个简单的示例: ```xml <aop:config> <aop:aspect id="loggingAspect" ref="loggingService"> <aop:before method="logBefore" pointcut="execution(* ...
在实际应用中,Spring的注解驱动AOP能够极大地简化我们的代码,减少XML配置,并使代码更具可读性和可维护性。例如,我们可以通过注解实现事务管理,避免在每个需要事务控制的方法中手动处理事务开始、提交或回滚。 ...
本文将深入探讨“Test07_Spring_Web_XML.rar”压缩包所包含的知识点,主要关注Spring MVC工程的初始化模块与基础配置。 1. **Spring MVC概述**: Spring MVC是Spring框架的一个子模块,它提供了处理HTTP请求和响应...
Spring框架是Java开发中最常用的轻量级框架之一,它的核心特性包括依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,简称AOP)。这两个概念是Spring框架的基石,极大地简化了...
除了XML配置,Spring 4.0引入了基于注解的AOP,使得配置更简洁。我们可以在切面类上使用`@Aspect`注解,并在方法上使用`@Before`、`@After`等通知注解来定义通知行为。例如: ```java @Aspect @Component public ...
- **XML配置的AOP**:在Spring配置文件中定义<aop:config>元素,使用<aop:aspect>定义切面,<aop:before>、<aop:after>等定义通知,<aop:pointcut>定义切入点。 **4. 应用示例** 假设我们有一个`UserService`,需要...
项目“maven-spring-aop”可能包含了使用Maven构建的Spring AOP示例项目,其中包含了完整的XML配置、Java类和测试用例,便于开发者深入理解和实践Spring AOP的使用。通过这个项目,你可以亲自动手创建、运行并观察...
在Spring AOP(面向切面编程)中,CGLIB是一个重要的动态代理库,它用于在运行时创建子类以实现对目标对象的代理。CGLIB是针对那些不支持接口代理(例如Java中的final类)的情况而设计的。下面我们将深入探讨Spring ...
Spring提供了声明式事务管理,允许开发者通过注解或XML配置来控制事务的边界,而无需手动管理事务的开始、提交和回滚。例如,`@Transactional`注解可以用于方法级别,表示该方法应在事务内执行。 至于"使用AOP来做...
在实际应用中,Spring AOP通常与Spring IoC(Inversion of Control,控制反转)一起使用,通过XML配置或Java配置来声明切面和通知。例如,可以使用<aop:config>元素定义切点(Pointcut),<aop:advisor>元素定义通知...
1. `applicationContext.xml`:Spring配置文件,定义bean的实例化、依赖注入以及AOP相关配置。 2. `MyDao.java`:自定义的DAO接口,定义了与数据库交互的方法。 3. `MyDaoImpl.java`:DAO接口的实现类,使用Spring...
**Spring AOP 入门篇:面向切面编程的注解与XML模式** 在软件开发中,Spring框架因其强大的功能和灵活性而广受欢迎,尤其是在企业级应用开发中。本教程将深入探讨Spring中的核心概念之一——面向切面编程(Aspect-...