`

spring_xml_AOP

 
阅读更多
一。配置服务类组件
@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.rar_java aop_xml aop

    在实际的`spring_aop_xml`压缩包中,应该包含了相关的XML配置文件、服务接口及其实现类、通知类等,通过这些文件可以更好地理解和学习如何在XML中配置和使用Spring AOP。通过深入学习和实践,你将能熟练掌握这一强大...

    spring_AOP.rar_876.aop_java aop_spring_aop

    6. Spring_AOP_XMLDefine:这部分可能讲解了如何通过XML配置文件定义和实现AOP切面。 7. Spring_AOP_AspectJDefine:可能涉及到使用AspectJ的语法和规则来定义切面。 掌握Spring AOP,需要理解上述概念,并通过实践...

    Spring_AOP_学习小结 Spring_AOP_学习小结 Spring_AOP_学习小结

    在Spring 2.0及更高版本中,推荐使用AspectJ注解或XML配置定义切入点表达式。 总结,Spring AOP提供了一种优雅的方式,让我们能够分离关注点,实现代码的模块化,提高可维护性和复用性。理解并熟练运用这些概念和...

    Spring_aop_xml.zip

    本实践项目“Spring_aop_xml.zip”以XML配置方式展示了如何在实际应用中运用Spring AOP。 首先,让我们深入了解Spring AOP的核心概念。AOP通过切面(Aspect)来组织代码,切面是关注点的模块化,这些关注点通常涉及...

    Spring_AOP_XML配置

    **Spring AOP XML配置**是Spring框架中一种重要的面向切面编程(Aspect-Oriented Programming,简称AOP)实现方式,允许开发者定义“横切关注点”,如日志、事务管理等,这些关注点可以独立于业务代码进行,提高代码...

    spring_aop1.rar_java aop_spring mvc 例子

    Spring提供了注解驱动的AOP,使得无需编写XML配置文件即可声明切面。 在“spring_aop1.rar”中,我们可以预期找到以下几个关键知识点: 1. **切点注解**:例如`@Before`、`@After`、`@Around`、`@AfterReturning`...

    spring_aop xml方式实现aop

    XML配置是Spring AOP早期常用的一种配置方式,虽然在Spring 4.3之后推荐使用注解式AOP,但理解XML配置对于深入学习AOP仍然很有帮助。下面我们将详细讨论如何通过XML配置实现Spring AOP。 首先,我们需要在Spring...

    spring_aop.rar

    在Spring框架早期,AOP的配置主要通过XML来进行。以下是一个简单的示例: ```xml &lt;aop:config&gt; &lt;aop:aspect id="loggingAspect" ref="loggingService"&gt; &lt;aop:before method="logBefore" pointcut="execution(* ...

    Spring_Annotation_AOP

    在实际应用中,Spring的注解驱动AOP能够极大地简化我们的代码,减少XML配置,并使代码更具可读性和可维护性。例如,我们可以通过注解实现事务管理,避免在每个需要事务控制的方法中手动处理事务开始、提交或回滚。 ...

    Test07_Spring_Web_XML.rar

    本文将深入探讨“Test07_Spring_Web_XML.rar”压缩包所包含的知识点,主要关注Spring MVC工程的初始化模块与基础配置。 1. **Spring MVC概述**: Spring MVC是Spring框架的一个子模块,它提供了处理HTTP请求和响应...

    Spring IOC和Spring AOP_spring aop_springIOC

    Spring框架是Java开发中最常用的轻量级框架之一,它的核心特性包括依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,简称AOP)。这两个概念是Spring框架的基石,极大地简化了...

    8_24_SpringAOP_springaop_

    除了XML配置,Spring 4.0引入了基于注解的AOP,使得配置更简洁。我们可以在切面类上使用`@Aspect`注解,并在方法上使用`@Before`、`@After`等通知注解来定义通知行为。例如: ```java @Aspect @Component public ...

    Spring_aop.rar_spring aop

    - **XML配置的AOP**:在Spring配置文件中定义&lt;aop:config&gt;元素,使用&lt;aop:aspect&gt;定义切面,&lt;aop:before&gt;、&lt;aop:after&gt;等定义通知,&lt;aop:pointcut&gt;定义切入点。 **4. 应用示例** 假设我们有一个`UserService`,需要...

    spring_aop

    项目“maven-spring-aop”可能包含了使用Maven构建的Spring AOP示例项目,其中包含了完整的XML配置、Java类和测试用例,便于开发者深入理解和实践Spring AOP的使用。通过这个项目,你可以亲自动手创建、运行并观察...

    spring_aop_cglib的实现方式

    在Spring AOP(面向切面编程)中,CGLIB是一个重要的动态代理库,它用于在运行时创建子类以实现对目标对象的代理。CGLIB是针对那些不支持接口代理(例如Java中的final类)的情况而设计的。下面我们将深入探讨Spring ...

    spring_aop_拦截实例

    Spring提供了声明式事务管理,允许开发者通过注解或XML配置来控制事务的边界,而无需手动管理事务的开始、提交和回滚。例如,`@Transactional`注解可以用于方法级别,表示该方法应在事务内执行。 至于"使用AOP来做...

    spring_aop.zip

    在实际应用中,Spring AOP通常与Spring IoC(Inversion of Control,控制反转)一起使用,通过XML配置或Java配置来声明切面和通知。例如,可以使用&lt;aop:config&gt;元素定义切点(Pointcut),&lt;aop:advisor&gt;元素定义通知...

    spring_aop.rar_spring-dao

    1. `applicationContext.xml`:Spring配置文件,定义bean的实例化、依赖注入以及AOP相关配置。 2. `MyDao.java`:自定义的DAO接口,定义了与数据库交互的方法。 3. `MyDaoImpl.java`:DAO接口的实现类,使用Spring...

    Spring_02_入门篇_AOP_简单实例

    **Spring AOP 入门篇:面向切面编程的注解与XML模式** 在软件开发中,Spring框架因其强大的功能和灵活性而广受欢迎,尤其是在企业级应用开发中。本教程将深入探讨Spring中的核心概念之一——面向切面编程(Aspect-...

Global site tag (gtag.js) - Google Analytics