spring 标注
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 标注的更多相关文章
- spring 标注 详解
http://snowolf.iteye.com/blog/578452 http://snowolf.iteye.com/blog/578452 非常棒的入门读物
- spring源码分析之cache注解
Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如EHCache 或者 OSCache),而是一个对缓存使用的抽象 ...
- Spring如何对私有接口进行注入(转载)
来自:http://didiluck.iteye.com/blog/1779640 Spring 标注@Autowired 如果做到自动装配私有变量而不使用set方法的原理 熟悉jdk的话就知道,方 ...
- 在eclipse中使用maven创建springMVC项目
一.在eclipse中创建maven-archetype-webapp项目: 1.新建项目选择maven项目 2.默认,下一步 3.选择maven-archetype-webapp,其他保持默认即可 ...
- eclipse创建springmvc项目
一.在eclipse中创建maven-archetype-webapp项目: 1.新建项目选择maven项目 2.默认,下一步 3.选择maven-archetype-webapp,其他保持默认即可 ...
- SpringMVC教程--eclipse中使用maven创建springMVC项目
一.在eclipse中创建maven-archetype-webapp项目: 1.新建项目选择maven项目 2.默认,下一步 3.选择maven-archetype-webapp,其他保持默认即可 ...
- Spring中用@Component、@Repository、@Service和 @Controller等标注的默认Bean名称会是小写开头的非限定类名
今天用调度平台去调用bean中的方法时,提示找不到bean.经查,发现是由于如果在标注上没有提供name属性值,则默认的bean名称是小写开头的,而不是大写开头的. 下面是其他文档参阅: 使用过滤器自 ...
- Spring MVC(二)基于标注的MVC
1.基于标注的Spring MVC 1.1 建立一个项目导入jar包(ioc aop mvc) 拷贝容器对应的配置文件到src下 在WEB-INF建立一个login.jsp 1.2 在web.xml ...
- spring4笔记----“零配置”:spring提供的几个Annotation标注
@Component :标注一个普通的Spring Bean类 @Controller :标注一个控制器组件器 @Service :标注一个业务逻辑组件器 @Repository ...
随机推荐
- css position 绝对定位和相对定位
position:absolute这个是绝对定位:是相对于浏览器的定位.比如:position:absolute:left:20px;top:80px; 这个容器始终位于距离浏览器左20px,距离浏览 ...
- Android中的文件权限操作
默认本工程创建的文件本工程对其有读写权限. 我们可以通过context.openFileOutput("文件名", 模式): 我们可以创建私有, 共有, 只读, 只写文件, 默认的 ...
- C++ ASSERT() 断言机制
C++ ASSERT() 断言机制 ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行.如果表达式不为0,则继 ...
- mysql 循环控制
1.使用whileDROP PROCEDURE IF EXISTS `addstudent`;DELIMITER ;;CREATE PROCEDURE `addstudent`(iNum int)BE ...
- Android开发面试经——1.常见人事面试问题
Android开发(29) 版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 做为程序员,我们都是有梦想的人,有时候当我 ...
- linux简单配置
lsof -i lsof -i:211.判断apache查找httpd路径: ps aux | grep httpd 结果: /usr/local/apache/bin/httpd /usr/loc ...
- 配置Java EE Eclipse+Tomcat开发环境
以下将详细介绍在Eclipse下搭建Java EE开发环境的每一步, 环境:Win 7 + JDK 1.7 + Eclipse IDE for Java EE Developers 3.7 +Tomc ...
- JDK环境变量安装正确还报错的情况解决方案
环境变量 JAVA_HOME , PATH 都已配置完毕,并且 java -version也显示正确如下 E:\apache-tomcat-8.0.30-windows-x64\apache-tomc ...
- NumPy(Numeric Python)使用方法
NumPy官网 参考:<Python数据分析基础教程:NumPy学习指南> 用Python做科学计算(好东西) NumPy是python的核心库,是python机器学习编程的最底层的库,不 ...
- mismatch位置(MD tag)- sam/bam格式解读进阶
这算是第二讲了,前面一讲是:Edit Distance编辑距离(NM tag)- sam/bam格式解读进阶 MD是mismatch位置的字符串的表示形式,貌似在call SNP和indel的时候会用 ...