项目(包)列表:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!--spring 配置文件位置--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring.xml</param-value> </context-param> <!--spring 监听器--> <listener> <description>spring监听器</description> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
<?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd "> <!-- 采用的annotation的方式进行AOP和 IOC --> <!-- 配置了component-scan可以移除 --> <context:annotation-config /> <!-- 启动对@AspectJ注解的支持 --> <aop:aspectj-autoproxy /> <!-- 自动扫描包(自动注入) --> <context:component-scan base-package="yingjun" /> </beans>
package yingjun.aop; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterThrowing; 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; @Component("aop") @Aspect public class AopMethod { @Pointcut("execution( * yingjun.service..*.*(..))") public void myMethod(){} @Before("execution( * yingjun.service..*.*(..))")//表示yingjun.service下任何包下任何类任何返回值的任何方法 public void beforeMethod(){ System.out.println("before method...AOP!!!!"); } @AfterReturning("myMethod()") public void AfterReturningMethod(){ System.out.println("After Returning normal...AOP!!!!"); } @AfterThrowing("myMethod()") public void AfterThrowing(){ System.out.println("After Throwing...AOP!!!!"); } @Around("myMethod()") public void Around(ProceedingJoinPoint pjp) throws Throwable{ System.out.println("method around start!!!!"); pjp.proceed(); System.out.println("method around end!!!!"); } } /*public class AopMethod { public void beforeMethod(){ System.out.println("before method...AOP!!!!"); } public void AfterReturningMethod(){ System.out.println("After Returning normal...AOP!!!!"); } public void AfterMethod(){ System.out.println("After method...AOP!!!!"); } public void AfterThrowing(){ System.out.println("After Throwing...AOP!!!!"); } }*/
package yingjun.service; import yingjun.model.User; public interface UserServiceI { /*用户操作*/ public void DoUser(User use); }
package yingjun.service.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import yingjun.dao.UserDaoI; import yingjun.model.User; import yingjun.service.UserServiceI; @Component("userService") public class UserServiceImpl implements UserServiceI { private UserDaoI userdao; public void DoUser(User user) { userdao.SaveUser(user); } public UserDaoI getUserdao() { return userdao; } //@Autowired按byType自动注入,如果想用byName则使用@Qulifie, //而@Resource默认按name,name找不到,按类型 @Autowired public void setUserdao(UserDaoI userdao) { this.userdao = userdao; } }
package yingjun.dao; import yingjun.model.User; public interface UserDaoI { public void AddUser(User user ); public void DeleteUser(User user ); public void SaveUser(User user ); }
package yingjun.dao.impl; import org.springframework.stereotype.Component; import org.springframework.stereotype.Repository; import yingjun.dao.UserDaoI; import yingjun.model.User; @Component("userdao") public class UserDaoImpl implements UserDaoI{ public void AddUser(User user ) { System.out.println("增加用户成功"); } public void DeleteUser(User user ) { System.out.println("删除用户成功"); } public void SaveUser(User user ) { System.out.println("保存用户成功"); } }
package yingjun.model; public class User { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
package yingjun.test; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import yingjun.model.User; import yingjun.service.UserServiceI; public class SpringTest { @Test public void springtest(){ ApplicationContext ac=new ClassPathXmlApplicationContext("spring.xml"); UserServiceI us=(UserServiceI)ac.getBean("userService"); User user=new User(); us.DoUser(user); } }
运行结果:
相关推荐
Spring提供了两种主要的AOP实现方式:基于代理(Proxy-based)和基于注解(Annotation-based)。 - **基于代理的AOP**:Spring使用JDK动态代理或CGLIB动态代理创建目标对象的代理,代理对象在调用目标方法前后执行...
Spring IOC和AOP的原理及实例详解 在软件开发中,控制反转(IOC)和面向切面编程(AOP)是两种非常重要的设计模式。Spring框架正是基于这两种模式的思想设计的。下面我们将详细介绍Spring IOC和AOP的原理及实例详解...
spring 的aop的详解如:切面,连接点,通知,切入点,目标对象,代理对象及annotation方式的aop实现和xml方式的事务管理等
在Spring中,可以通过声明式方式配置AOP。通常使用`@Aspect`注解定义切面,并结合`@Before`、`@After`、`@Around`等注解来指定切入点和通知。 **示例:** ```java @Aspect @Component public class LoggingAspect ...
此外,我们还需要在Spring配置中启用注解驱动的AOP支持,通常在`@Configuration`类中添加`@EnableAspectJAutoProxy`注解即可: ```java import org.springframework.context.annotation.Configuration; import org....
标题 "SpringIOC_SpringMVC_SpringAnnotation_JPA" 涵盖了四个核心的Java开发框架技术,它们是Spring框架的重要组成部分。Spring框架是一个全面的企业级应用开发框架,提供了许多功能,包括依赖注入(Dependency ...
这个压缩包提供的教程覆盖了从基础到进阶的Spring功能,包括IOC、AOP和与MyBatis的集成,对于想要提升Spring技术栈的开发者来说,是一个宝贵的资源。通过逐个研究这些示例,开发者可以深入理解Spring框架的核心特性...
在实际项目中,Spring AOP可以与其他Spring特性如IoC、DI等结合使用,提高代码的可维护性和复用性。 在提供的压缩包文件"aop"中,可能包含了示例代码,用于演示上述配置和使用过程。学习者可以通过阅读和运行这些...
根据提供的文件信息,内容涉及Spring框架中的IoC(控制反转)和Annotation(注解),以及使用这些技术进行数据库操作的CRUD示例。同时,内容中提到了C3P0连接池和DBUtils的使用,以及JUnit测试框架。下面将详细介绍...
然后发现了多年前的一个精简版的Spring学习项目,叫,作者对spring核心的IOC和AOP进行了临摹实现,也很细心的对实现步骤进行了拆分。我看完了tiny-spring收获许多,自己也参考该项目进行了模仿与实践,从我学习的...
资料包含spring-iocdi-annotation-document,iocdi-annotation-mvc,iocdi-xml-extend,iocdi-annotation-extend proxy,jdkproxy-transaction,jdkproxy-salary,day02-itheima11-spring-08-cglibproxy,day02-itheima11-...
标题中的"Spring_1200_IOC_Annotation_Component"表明我们即将探讨的是关于Spring框架的IoC(Inversion of Control,控制反转)和基于注解的组件管理。在这个主题下,我们将深入理解Spring如何通过注解来实现依赖...
029-spring-ioc-基于注解方式ioc配置.mp4 030-spring-ioc-扩展周期方法和作用域注解.mp4 031-spring-ioc-di注入注解语法.mp4 032-spring-ioc-属性@Value注解.mp4 033-spring-ioc-注解三层综合案例.mp4 034-...
029-spring-ioc-基于注解方式ioc配置.mp4 030-spring-ioc-扩展周期方法和作用域注解.mp4 031-spring-ioc-di注入注解语法.mp4 032-spring-ioc-属性@Value注解.mp4 033-spring-ioc-注解三层综合案例.mp4 034-...
029-spring-ioc-基于注解方式ioc配置.mp4 030-spring-ioc-扩展周期方法和作用域注解.mp4 031-spring-ioc-di注入注解语法.mp4 032-spring-ioc-属性@Value注解.mp4 033-spring-ioc-注解三层综合案例.mp4 034-...
029-spring-ioc-基于注解方式ioc配置.mp4 030-spring-ioc-扩展周期方法和作用域注解.mp4 031-spring-ioc-di注入注解语法.mp4 032-spring-ioc-属性@Value注解.mp4 033-spring-ioc-注解三层综合案例.mp4 034-...
在IT行业中,Spring框架是Java企业级应用开发的首选,其强大的依赖注入(IOC)和面向切面编程(AOP)功能使得复杂的应用管理变得轻松。而Hibernate作为一款优秀的对象关系映射(ORM)框架,简化了数据库操作。将...
通过这些示例,学习者可以更直观地了解 Spring 框架的核心特性,包括 AOP 在实际问题中的应用,IOC 容器的配置和使用,以及如何与数据库交互。实践中,结合 Spring Boot 和 Spring Data 等现代工具,开发效率将...
在Spring AOP中,除了注解方式,还可以使用XML配置来定义切面和通知,但注解方式更简洁且易于理解和维护。对于初学者来说,理解这些基本概念并熟练运用,能够大大提高开发效率和代码质量。在实际项目中,合理地使用...