- 浏览: 248732 次
- 性别:
- 来自: 深圳
-
文章分类
最新评论
-
sweed0:
为何每一段代码都重复一次呢?
spring注解实例二 -
Gary_Huangpf:
- - 插件报错啊
Ext前台分页 -
ddvk2007:
版主 我想請問你所說的mapreduce是hadoop的還是g ...
MapReduce中的Shuffle和Sort分析 -
人可木:
好问章,楼主写的相当详细。。。多谢。。。
findbugs插件的安装与应用 -
hautbbs:
按照博主的方法启动调试出现jvm terminated.Ex ...
10分钟学会使用MyEclipse断点调试js
1.准备工作
(1)导入common-annotations.jar
(2)导入schema文件 文件名为spring-context-2.5.xsd
(3)在xml的beans节点中配置
<?xml version="1.0" encoding="UTF-8"?>
<beans
.......
xmlns:context="http://www.springframework.org/schema/context "
xsi:schemaLocation="
.......
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd " >
.....
<!--将针对注解的处理器配置好 -->
<context:annotation-config />
.....
<beans>
2.在java代码中使用@Autowired或@Resource注解方式进行装配 ,这两个注解的区别是:
@Autowired默认按类型装配,@Resource默认按名称装配,当找不到名称匹配的bean才会按类型装配。
默认注解
@Resource private PersonDao persondao;
<bean id="personDao" class="com.hf.dao.impl.PersonDaoBean"></bean>
首先是判断persondao是否与xml里的personDao名字相同,相同则注入,
不同则判断persondao是否是com.hf.dao.impl.PersonDaoBean类型,是则注入不是则返回null.
@Resource(name="personDao") private PersonDao dao;
<bean id="personDao" class="com.hf.dao.impl.PersonDaoBean"></bean>
判断name名称是否与bean中id相同不同则返回null
Spring自带注解方式
@Autowired @Qualifier("personDao") private PersonDao persondao;
默认是按类型注入 加上@Qualifier("personDao")则按名称注入
3.通过在classpath 自动扫描方式把组件纳入spring容器中管理
spring2.5为我们引入了组件自动扫描机制,它可以在类路径底下寻找标注了@Component @Service @Controller @Repository
注解的类,并将这些类纳入进spring容器中管理。它们的作用和xml文件中使用bean 节点配饰组件是一样的。
(1)使用到了注解的功能(需要注解准备工作的内容)
(2)在xml中加入
<context:component-scan base-package="com.hf" />
其中base-package 为需要扫描的包(包含子包)
(3)
@Service用于标注业务层组件
@Controller用于标注控制层组件(如struts中的action)
@Repository用于标注数据访问组件 ,即DAO 组件
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
(4)
业务类
@Service
public class PersonServiceBean implements PersonService {.....}
输出类
AbstractApplicationContext cxt = new ClassPathXmlApplicationContext("beans.xml");
PersonService personService= (PersonService)cxt.getBean("personServiceBean");
System.out.println(personService);
cxt.close();
使用注解中bean的id默认名称为类名称的首字母小写名称
--------------------------------------------------
自己指定名称
@Service("aa") //默认作用域范围 是单例范围
public class PersonServiceBean implements PersonService {.....}
输出类
AbstractApplicationContext cxt = new ClassPathXmlApplicationContext("beans.xml");
PersonService personService= (PersonService)cxt.getBean("aa");
System.out.println(personService);
cxt.close();
--------------------------------------------------
@Service("aa") @Scope("prototype")//修改bean的作用域
public class PersonServiceBean implements PersonService {....}
-----------------------------------------------------------
@PostConstruct
public void init(){
System.out.println("初始化");
}
@PreDestroy
public void destory(){
System.out.println("释放资源");
}
4.AOP注解方式
(1)准备工作:
.导入common-annotations.jar aspectjrt.jar aspectweaver.jar cglib-nodep-2.13.jar
.导入schema文件 文件名为spring-aop-2.0.xsd
.在xml的beans节点中配置
<?xml version="1.0" encoding="UTF-8"?>
<beans
.......
xmlns:aop="http://www.springframework.org/schema/aop "
xsi:schemaLocation="
.......
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd " >
.....
<!-- 配置解释处理器 为@AspectJ注解提供支持 -->
<aop:aspectj-autoproxy />
.....
<beans>
(2)
<bean id="myInterceptor" class="com.hf.service.impl.MyInterceptor"></bean>
<bean id="personService" class="com.hf.service.impl.PersonServiceBean" ></bean>
将切面和被拦截的类交给spring管理
(3)切面类
@Aspect //定义切面类
public class MyInterceptor {
/**
* @Pointcut("execution(* com.hf.service..*.*(..))")表达式含义
* 第一个* 表示返回值类型为任意类型
* com.hf.service.. 两个点表示包路径下的子包的类也要拦截
* com.hf.service..*.* 子包的所有类中的所有方法 第一个*是方法第二个*是类
* (..)代表方法参数随意 可有可无可多可少
* **/
@Pointcut("execution (* com.hf.service.impl.PersonServiceBean.*(..))")// 定义切入点
private void andMethod()//声明一个切入点
{}
/* @Before("andMethod()")
public void doAccessCheck(){
System.out.println("前置通知");
}
*/
@Before("andMethod() && args(name)") //带参数 只拦截符合参数类型的方法
public void doAccessCheck(String name){
System.out.println("前置通知"+name);
}
/* @AfterReturning("andMethod()")
public void doFaterReturning(){
System.out.println("后置通知");
}*/
@AfterReturning(pointcut="andMethod()",returning="result")//带返回值的 无返回值的方法 result为null
public void doFaterReturning(String result){//拦截方法执行后 获取返回值对象
System.out.println("后置通知:"+result);
}
@After("andMethod()")
public void doAfter(){
System.out.println("最终通知");
}
/* @AfterThrowing("andMethod()")
public void doAfterThrowing(){
System.out.println("例外通知");
}*/
@AfterThrowing(pointcut="andMethod()" , throwing="e") //获取例外并打印
public void doAfterThrowing(Exception e){
System.out.println("例外通知:"+e);
}
@Around("andMethod()")//环绕通知
public Object doBasecProfiling(ProceedingJoinPoint pjp )throws Throwable{
//if(){//判断是否与权限
System.out.println("进入通知");
Object result = pjp.proceed();
System.out.println("离开 通知");
//}
return result;
}
}
(4)业务类 PersonServiceBean
public class PersonServiceBean implements PersonService {
public void save(String name){
throw new RuntimeException("纯属例外");
// System.out.println("我是Save方法"+name);
}
public String update() {
return "我是update方法";
}
}
发表评论
-
spring AOP
2012-06-13 11:14 928先简单的说说spring aop使用的好处:利用AOP横向添加 ... -
spring IOC的使用
2012-06-13 10:58 969Ioc和他的作用,简单的来讲,就是由容器控制程序之间的关 ... -
spring IOC介绍
2012-06-13 10:55 1366首先想说说IoC(Inversion of ... -
spring概述
2012-06-13 10:52 817随着越来越多的项目 ... -
spring学习总结
2010-02-04 08:49 978先说说简单地使用Struts2做Web时的经历: 1.经常需要 ... -
spring注解实例二
2010-01-26 11:22 2384昨天对Spring注解有了一个整体认识,至少完成了一个简单的w ... -
spring注解实例一
2010-01-26 11:15 2951先来构建一个极为简单的web应用,从controller到da ... -
spring注解配置文件解析
2010-01-26 11:01 35841、applicationContext.xml ... -
使用 Spring 2.5 基于注解驱动的 Spring MVC(二)
2010-01-22 11:13 3440我们在 ② 处添加了一个 ModelMap 属性,其属性名为 ... -
使用 Spring 2.5 基于注解驱动的 Spring MVC(一)
2010-01-22 11:05 1376基于注解的配置有越来越流行的趋势,Spring 2.5 顺应这 ... -
spring注解
2010-01-13 09:56 1032Spring JSR-250注解 注释配 ... -
spring相关配置内容解析
2010-01-05 14:27 13361、web.xml配置文件: <? ... -
Spring MVC 配置【转】
2010-01-03 14:51 1073一,配置分发器 Dispatche ... -
spring mvc 学习笔记
2010-01-03 14:41 1168一、与struts的不同 1.Spr ... -
Spring Mvc快速入门
2010-01-03 14:20 1757Spring MVC是结构最清晰的MVC ... -
Spring 可代码简化操作类
2009-12-28 09:31 1070SimpleJdbcTemplate类是Jd ... -
Spring 命名参数操作类NamedParameterJdbcTemplate
2009-12-28 09:28 1814在传统的SQL语句中,参数都是用'?'占 ... -
Spring JdbcTemplate操作类
2009-12-24 10:42 27991.JdbcTemplate ...
相关推荐
Spring注解详解 Spring框架中,注解(Annotation)是一种元数据,能够提供更多关于程序元素的信息,从而简化配置和编程。Spring从2.5版本开始支持注解,通过使用注解,可以使得Bean的配置更加简洁和灵活。 注册...
### Spring注解详解及实例分析 #### 概述 随着技术的发展与演进,Spring框架在不断迭代过程中引入了大量的注解来简化应用的配置过程。相比于传统的XML配置方式,注解配置提供了更为简洁且直观的方式来定义Bean以及...
Spring 3.0 是一个重要的版本,它引入了大量的注解,极大地简化了Spring框架的配置,使得开发人员能够更加专注于业务逻辑,而不再是XML配置。本文将深入解析Spring 3.0中的主要注解,帮助你更好地理解和使用它们。 ...
Spring 注解详解 Spring 注解是 Spring 框架中的一种强大功能,它允许开发者使用注解来配置和管理 Bean 对象。本文将详细讲解 Spring 注解的含义、类型、使用方法和相关配置。 注册注解处理器 在 Spring 中,需要...
### Spring注解详解 #### 一、Spring框架与注解技术背景 随着软件工程的发展,特别是在企业级应用领域,Spring框架因其轻量级且强大的功能而成为开发者的首选。Spring框架提供了一种全面的方式来管理对象及其依赖...
【Spring注解使用详解】 Spring框架自2.5版本开始,引入了注解配置,使得开发者可以在不依赖XML配置文件的情况下实现Bean的定义和依赖注入。注解配置因其简洁、直观的特点,逐渐成为主流的配置方式。在本文中,我们...
### Spring注解详解 #### 一、Spring框架与注解技术背景 Spring 是一款轻量级的开源框架,主要用于简化企业级应用的开发工作。它提供了丰富的功能支持,包括依赖注入(Dependency Injection, DI)、面向切面编程...
在本篇《Spring注解学习手札(一)构建简单Web应用》中,我们将深入探讨如何使用Spring框架的注解来构建一个基本的Web应用程序。Spring框架是Java开发中的核心工具,尤其在企业级应用中广泛应用。它简化了依赖注入、...
Spring 3.0 是一个里程碑式的版本,引入了大量的新特性,其中注解注入是其核心改进之一。注解注入使得代码更加简洁,减少了XML配置,提高了开发效率。在这个专题里,我们将深入探讨Spring 3.0中的注解注入机制。 ...
Spring提供了多种注解来帮助开发者实现依赖注入,其中包括@Autowired、@Qualifier、@Resource以及@PostConstruct等。下面将详细介绍这些注解的使用方法和区别。 1. @Autowired注解 @Autowired是Spring提供的注解,...
使用 Spring 2.5 基于注解驱动的 Spring MVC 详解 本文将介绍 Spring 2.5 新增的 Spring MVC 注解功能,讲述如何使用注解配置替换传统的基于 XML 的 Spring MVC 配置。 Spring MVC 注解驱动 在 Spring 2.5 中,...