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. Android简单登陆页面

    布局: 线性布局+相对布局 日志打印: 利用LogCat和System.out.println打印观察. Onclick事件是采用过的第四种: 在配置文件中给Button添加点击时间 涉及知识: 通过 ...

  2. Handler知识点详解

    Handler是在多线程之间使用的,用于线程之间进行通信. 要想知道为什么需要Handler就首先说明android的主线程和工作线程. 主线程又称为UI线程.正是因为在android中,所有与UI有 ...

  3. javascript js中的typeof使用

    typeof运算符介 绍:typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型.它返回值是一个字符串,该字符串说明运算数的类型. 你 知道下面typeof运算的结果吗? typeof ...

  4. D3.js 插入元素,删除元素

    插入元素涉及的函数有两个: 一.append():在选择集末尾插入元素 假设有三个段落元素 <p>Apple</p> <p>Pear</p> <p ...

  5. datagrid实现行的上移和下移

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  6. [转]Android 5.0——Material Design详解(动画篇)

    Material Design:Google推出的一个全新的设计语言,它的特点就是拟物扁平化. Material Design包含了很多内容,今天跟大家分享一下Material新增的动画: 在Andr ...

  7. VB6 GDI+ 入门教程[5] 基础绘图小结

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[5] 基础绘图小结 2009 年 6 月 18 日 4条 ...

  8. 基于TBDS的flume异常问题排查过程

    版权声明:本文由王亮原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/214 来源:腾云阁 https://www.qclou ...

  9. MySQL内核深度优化

    版权声明:本文由简怀兵原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/179 来源:腾云阁 https://www.qclo ...

  10. linux笔记:linux常用命令-文件处理命令

    文件处理命令:touch(创建空文件) 文件处理命令:cat(显示文件内容) 文件处理命令:more(分页显示文件内容) 文件处理命令:head(显示文件前面几行) 文件处理命令:tail(显示文件后 ...