`

采用annotation的方式配置Spring的IOC和AOP

阅读更多

项目(包)列表:



 

 

<?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);
	}

}

  运行结果:

 

  • 大小: 23 KB
  • 大小: 10.7 KB
  • 大小: 17.2 KB
分享到:
评论

相关推荐

    以注解方式模拟Spring IoC AOP

    Spring提供了两种主要的AOP实现方式:基于代理(Proxy-based)和基于注解(Annotation-based)。 - **基于代理的AOP**:Spring使用JDK动态代理或CGLIB动态代理创建目标对象的代理,代理对象在调用目标方法前后执行...

    Spring IOC和aop的原理及实例详解

    Spring IOC和AOP的原理及实例详解 在软件开发中,控制反转(IOC)和面向切面编程(AOP)是两种非常重要的设计模式。Spring框架正是基于这两种模式的思想设计的。下面我们将详细介绍Spring IOC和AOP的原理及实例详解...

    spring ioc.aop

    spring 的aop的详解如:切面,连接点,通知,切入点,目标对象,代理对象及annotation方式的aop实现和xml方式的事务管理等

    Spring IOC AOP

    在Spring中,可以通过声明式方式配置AOP。通常使用`@Aspect`注解定义切面,并结合`@Before`、`@After`、`@Around`等注解来指定切入点和通知。 **示例:** ```java @Aspect @Component public class LoggingAspect ...

    使用Spring的注解方式实现AOP

    此外,我们还需要在Spring配置中启用注解驱动的AOP支持,通常在`@Configuration`类中添加`@EnableAspectJAutoProxy`注解即可: ```java import org.springframework.context.annotation.Configuration; import org....

    SpringIOC_SpringMVC_SpringAnnotation_JPA

    标题 "SpringIOC_SpringMVC_SpringAnnotation_JPA" 涵盖了四个核心的Java开发框架技术,它们是Spring框架的重要组成部分。Spring框架是一个全面的企业级应用开发框架,提供了许多功能,包括依赖注入(Dependency ...

    spring相关的demo,包含spring的ioc注入,aop的使用,mybatis的整合(1).zip

    这个压缩包提供的教程覆盖了从基础到进阶的Spring功能,包括IOC、AOP和与MyBatis的集成,对于想要提升Spring技术栈的开发者来说,是一个宝贵的资源。通过逐个研究这些示例,开发者可以深入理解Spring框架的核心特性...

    基于xml的SpringAOP实例

    在实际项目中,Spring AOP可以与其他Spring特性如IoC、DI等结合使用,提高代码的可维护性和复用性。 在提供的压缩包文件"aop"中,可能包含了示例代码,用于演示上述配置和使用过程。学习者可以通过阅读和运行这些...

    2.SpringIOC-Annotation銆丣unit.pdf

    根据提供的文件信息,内容涉及Spring框架中的IoC(控制反转)和Annotation(注解),以及使用这些技术进行数据库操作的CRUD示例。同时,内容中提到了C3P0连接池和DBUtils的使用,以及JUnit测试框架。下面将详细介绍...

    tiny-spring-practice:实践tiny-spring,手写Spring两大核心功能:IOC和AOP

    然后发现了多年前的一个精简版的Spring学习项目,叫,作者对spring核心的IOC和AOP进行了临摹实现,也很细心的对实现步骤进行了拆分。我看完了tiny-spring收获许多,自己也参考该项目进行了模仿与实践,从我学习的...

    spring练习项目.7z

    资料包含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_1200_IOC_Annotation_Component"表明我们即将探讨的是关于Spring框架的IoC(Inversion of Control,控制反转)和基于注解的组件管理。在这个主题下,我们将深入理解Spring如何通过注解来实现依赖...

    2023版全新SSM框架实战精讲 视频教程 下载下载 因为太大存百度云盘3.zip

    029-spring-ioc-基于注解方式ioc配置.mp4 030-spring-ioc-扩展周期方法和作用域注解.mp4 031-spring-ioc-di注入注解语法.mp4 032-spring-ioc-属性@Value注解.mp4 033-spring-ioc-注解三层综合案例.mp4 034-...

    2023版全新SSM框架实战精讲 视频教程 下载下载 因为太大存百度云盘4.zip

    029-spring-ioc-基于注解方式ioc配置.mp4 030-spring-ioc-扩展周期方法和作用域注解.mp4 031-spring-ioc-di注入注解语法.mp4 032-spring-ioc-属性@Value注解.mp4 033-spring-ioc-注解三层综合案例.mp4 034-...

    2023版全新SSM框架实战精讲 视频教程 下载下载 因为太大存百度云盘2.zip

    029-spring-ioc-基于注解方式ioc配置.mp4 030-spring-ioc-扩展周期方法和作用域注解.mp4 031-spring-ioc-di注入注解语法.mp4 032-spring-ioc-属性@Value注解.mp4 033-spring-ioc-注解三层综合案例.mp4 034-...

    2023版全新SSM框架实战精讲 视频教程 下载下载 因为太大存百度云盘1.zip

    029-spring-ioc-基于注解方式ioc配置.mp4 030-spring-ioc-扩展周期方法和作用域注解.mp4 031-spring-ioc-di注入注解语法.mp4 032-spring-ioc-属性@Value注解.mp4 033-spring-ioc-注解三层综合案例.mp4 034-...

    SpringAOP整合Hibernate并使用事务

    在IT行业中,Spring框架是Java企业级应用开发的首选,其强大的依赖注入(IOC)和面向切面编程(AOP)功能使得复杂的应用管理变得轻松。而Hibernate作为一款优秀的对象关系映射(ORM)框架,简化了数据库操作。将...

    spring知识点代码示例整理

    通过这些示例,学习者可以更直观地了解 Spring 框架的核心特性,包括 AOP 在实际问题中的应用,IOC 容器的配置和使用,以及如何与数据库交互。实践中,结合 Spring Boot 和 Spring Data 等现代工具,开发效率将...

    spring aop注解方式代码

    在Spring AOP中,除了注解方式,还可以使用XML配置来定义切面和通知,但注解方式更简洁且易于理解和维护。对于初学者来说,理解这些基本概念并熟练运用,能够大大提高开发效率和代码质量。在实际项目中,合理地使用...

Global site tag (gtag.js) - Google Analytics