1、添加支持标注的spring中的jar包:

spring-context.jar

spring-context-support.jar

2、在xml中配置命名空间和schema

<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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">

3、启用基于注解的bean管理和依赖注入DI

    <context:component-scan base-package="com.spring1" />

表示,指定的基包以及子包都会纳入到spring的bean管理中。

4、Bean的注解(以下几种均可)

(1)dao里边的类一般用@Repository

(2)service里边的类一般用@Service

(3)其他的用@Component

aa

Spring mvc中的controller里边的类一般用@Controller

@Repository("dao")
@Scope("prototype")
@Lazy(true)
public class UserDao { public String showUser(){
System.out.println("show");
return "你好";
}
}

加上了注解,就可以在bean中去掉了。

5、JSR330的注解

需要导入javax.inject.jar

(1)@Named注解,只要加入Named就可以加入bean的管理了。

6、IOC,DI的注解(一下三种选一种均可)

(1)set注入用@AutoWired

    @Autowired
public void setUserDao(UserDao dao){
this.userDao = dao;
}

(2)将@AutoWired加到被注入的属性上边,可以将set方法去掉

@Named
public class UserService { @Autowired
private UserDao userDao; public void show(){
userDao.showUser();
} }

(3)jsr330中使用@Inject注入方法

@Named
public class UserService { @Inject
private UserDao userDao; public void show(){
userDao.showUser();
} }

(4)jsr250中使用@Resource注入方法

@Named
public class UserService { @Resource
private UserDao userDao; public void show(){
userDao.showUser();
} }

7、AOP注解

首先在xml中加入以下内容,加入aspect切面支持。

<aop:aspectj-autoproxy/>

(1)在切面类上首先用@Named注解或者其他的加入Bean管理,再加上@Aspect注解表示切面类

@Aspect
@Named
public class MyAspect { }

(2)定义切入点表达式,并加入@Pointcut(.......),包,类,方法,参数

@Aspect
@Named
public class MyAspect { @Pointcut("execution(* com.spring1.dao..*.*(..))")
public void pointcut(){} }

(3)定义通知

@Named
@Aspect
public class MyAspect { @Pointcut("execution(* com.spring1.dao..*.*(..))")
public void pointcut(){} @Before("pointcut()")
public void beforeAdvise(){
System.out.println("before");
}
@AfterReturning(pointcut="pointcut()",returning="o")
public void afterReturningAdvise(Object o){
System.out.println("after return");
} @After("pointcut()")
public void afterAdvise(){
System.out.println("finally");
}
@AfterThrowing(pointcut="pointcut()",throwing="e")
public void afterThrowningAdvise(Exception e){
System.out.println("throwning");
} }

(3)仅定义环绕通知

@Named
@Aspect
public class MyAspect { @Pointcut("execution(* com.spring1.dao..*.*(..))")
public void pointcut(){} @Around("pointcut()")
public void aroundAdvise(ProceedingJoinPoint pjp){
try{
System.out.println("after");
Object object = pjp.proceed();
System.out.println("after returning");
}catch(Throwable e){
System.out.println("after throwning");
}finally{
System.out.println("after");
}
}
}

spring 标注的更多相关文章

  1. spring 标注 详解

    http://snowolf.iteye.com/blog/578452 http://snowolf.iteye.com/blog/578452  非常棒的入门读物

  2. spring源码分析之cache注解

    Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如EHCache 或者 OSCache),而是一个对缓存使用的抽象 ...

  3. Spring如何对私有接口进行注入(转载)

    来自:http://didiluck.iteye.com/blog/1779640 Spring 标注@Autowired 如果做到自动装配私有变量而不使用set方法的原理  熟悉jdk的话就知道,方 ...

  4. 在eclipse中使用maven创建springMVC项目

    一.在eclipse中创建maven-archetype-webapp项目: 1.新建项目选择maven项目 2.默认,下一步 3.选择maven-archetype-webapp,其他保持默认即可 ...

  5. eclipse创建springmvc项目

    一.在eclipse中创建maven-archetype-webapp项目: 1.新建项目选择maven项目 2.默认,下一步 3.选择maven-archetype-webapp,其他保持默认即可 ...

  6. SpringMVC教程--eclipse中使用maven创建springMVC项目

    一.在eclipse中创建maven-archetype-webapp项目: 1.新建项目选择maven项目 2.默认,下一步 3.选择maven-archetype-webapp,其他保持默认即可 ...

  7. Spring中用@Component、@Repository、@Service和 @Controller等标注的默认Bean名称会是小写开头的非限定类名

    今天用调度平台去调用bean中的方法时,提示找不到bean.经查,发现是由于如果在标注上没有提供name属性值,则默认的bean名称是小写开头的,而不是大写开头的. 下面是其他文档参阅: 使用过滤器自 ...

  8. Spring MVC(二)基于标注的MVC

    1.基于标注的Spring MVC 1.1 建立一个项目导入jar包(ioc aop mvc) 拷贝容器对应的配置文件到src下 在WEB-INF建立一个login.jsp 1.2 在web.xml ...

  9. spring4笔记----“零配置”:spring提供的几个Annotation标注

    @Component  :标注一个普通的Spring Bean类 @Controller    :标注一个控制器组件器 @Service        :标注一个业务逻辑组件器 @Repository ...

随机推荐

  1. css position 绝对定位和相对定位

    position:absolute这个是绝对定位:是相对于浏览器的定位.比如:position:absolute:left:20px;top:80px; 这个容器始终位于距离浏览器左20px,距离浏览 ...

  2. Android中的文件权限操作

    默认本工程创建的文件本工程对其有读写权限. 我们可以通过context.openFileOutput("文件名", 模式): 我们可以创建私有, 共有, 只读, 只写文件, 默认的 ...

  3. C++ ASSERT() 断言机制

    C++ ASSERT() 断言机制 ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行.如果表达式不为0,则继 ...

  4. mysql 循环控制

    1.使用whileDROP PROCEDURE IF EXISTS `addstudent`;DELIMITER ;;CREATE PROCEDURE `addstudent`(iNum int)BE ...

  5. Android开发面试经——1.常见人事面试问题

      Android开发(29)  版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 做为程序员,我们都是有梦想的人,有时候当我 ...

  6. linux简单配置

    lsof -i lsof -i:211.判断apache查找httpd路径: ps aux | grep httpd 结果:  /usr/local/apache/bin/httpd /usr/loc ...

  7. 配置Java EE Eclipse+Tomcat开发环境

    以下将详细介绍在Eclipse下搭建Java EE开发环境的每一步, 环境:Win 7 + JDK 1.7 + Eclipse IDE for Java EE Developers 3.7 +Tomc ...

  8. JDK环境变量安装正确还报错的情况解决方案

    环境变量 JAVA_HOME , PATH 都已配置完毕,并且 java -version也显示正确如下 E:\apache-tomcat-8.0.30-windows-x64\apache-tomc ...

  9. NumPy(Numeric Python)使用方法

    NumPy官网 参考:<Python数据分析基础教程:NumPy学习指南> 用Python做科学计算(好东西) NumPy是python的核心库,是python机器学习编程的最底层的库,不 ...

  10. mismatch位置(MD tag)- sam/bam格式解读进阶

    这算是第二讲了,前面一讲是:Edit Distance编辑距离(NM tag)- sam/bam格式解读进阶 MD是mismatch位置的字符串的表示形式,貌似在call SNP和indel的时候会用 ...