- 浏览: 263973 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (180)
- J2SE (15)
- J2EE (7)
- Struts (2)
- Hibernate (18)
- Spring (22)
- ssh (2)
- HTML (1)
- JS (10)
- CSS (3)
- jQuery (15)
- extJS (0)
- FLEX (14)
- Web service (7)
- Axis2 (3)
- lucene2.0 (9)
- maven (3)
- JBoss (0)
- WebLogic (0)
- Linux (8)
- Android (0)
- SiteMesh (1)
- JPA (0)
- JBPM (1)
- xFire (3)
- XML (4)
- apache (4)
- bingo专区 (0)
- 加密解密算法研究 (1)
- 数据库 (16)
- 资料 (1)
- 经验 (4)
- 健康 (1)
- 技术交流区 (1)
- 交友区 (0)
- jquery 插件区 (1)
最新评论
-
forrest_lv:
很有帮助
Axis2 XFire CXF 比较 -
kuloujianzun:
...
flex DataGrid -
zx.peng:
大哥,请教一下...
下面在别的地方引入:(在什么地方、怎么 ...
FLEX下拉多选框 -
elvislee030:
试试去,正好要找这个组件。。先谢过
FLEX下拉多选框 -
futrueboy:
如果你发到网上来,请翻译的好点
Apache Mina的学习应用(三)
一. spring注解 1.准备工作 xsi:schemaLocation=" ..... 2.在java代码中使用@Autowired或@Resource注解方式进行装配,这两个注解的区别是: @Resource(name="personDao") private PersonDao dao; Spring自带注解方式 3.通过在classpath 自动扫描方式把组件纳入spring容器中管理 (4) 4.AOP注解方式 xsi:schemaLocation=" ..... (2) @Aspect //定义切面类 @Pointcut("execution (* com.hf.service.impl.PersonServiceBean.*(..))")// 定义切入点 (4)业务类 PersonServiceBean public void save(String name){
(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"
.......
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd" >
<!--将针对注解的处理器配置好 -->
<context:annotation-config />
.....
<beans>
@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.
<bean id="personDao" class="com.hf.dao.impl.PersonDaoBean"></bean>
判断name名称是否与bean中id相同不同则返回null
@Autowired @Qualifier("personDao") private PersonDao persondao;
默认是按类型注入 加上@Qualifier("personDao")则按名称注入
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泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
业务类
@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("释放资源");
}
(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"
.......
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd" >
<!-- 配置解释处理器 为@AspectJ注解提供支持 -->
<aop:aspectj-autoproxy />
.....
<beans>
<bean id="myInterceptor" class="com.hf.service.impl.MyInterceptor"></bean>
<bean id="personService" class="com.hf.service.impl.PersonServiceBean" ></bean>
将切面和被拦截的类交给spring管理
(3)切面类
public class MyInterceptor {
/**
* @Pointcut("execution(* com.hf.service..*.*(..))")表达式含义
* 第一个* 表示返回值类型为任意类型
* com.hf.service.. 两个点表示包路径下的子包的类也要拦截
* com.hf.service..*.* 子包的所有类中的所有方法 第一个*是方法第二个*是类
* (..)代表方法参数随意 可有可无可多可少
* **/
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;
}
}
public class PersonServiceBean implements PersonService {
throw new RuntimeException("纯属例外");
// System.out.println("我是Save方法"+name);
}
public String update() {
return "我是update方法";
}
}
发表评论
-
Spring 企业级开发应用---------AXIS和spring的远程服务整合的应用
2010-08-16 14:36 1184Spring框架对远程访问 ... -
Spring 企业级开发应用---------httpinvoke和spring的远程服务整合的应用
2010-08-16 14:35 965和burlap和hessian一样的配置细细 服务端服务 ... -
Spring 企业级开发应用---------hessian和spring的远程服务整合的应用
2010-08-16 14:35 942hessian和burlap使用同一公司的产品实现机制不同 ... -
Spring 企业级开发应用---------burlap和spring的远程服务整合的应用
2010-08-16 14:34 857使用burlap和spring整合发布远程服务 开发步骤 ... -
Spring 企业级开发应用---------rmi和spring的整合的应用
2010-08-16 14:34 832使用spring和rmi开发远程服务的类的应用(此处可以一 ... -
spring2.5 和Hibernate的注解的应用
2010-08-16 14:30 800一、步骤 a. <!-- 数据源 --&g ... -
获取ApplicationContext的几种方式
2010-08-16 14:26 986第一种采用类路径的加载方式获取: Appli ... -
使用Spring 2.5 注释驱动的 IoC 功能
2010-08-16 14:10 862在项目中使用Spring的注解,关于sp ... -
Spring 和ActionMQ整合JMS开发应用
2010-08-16 13:51 1523Spring 和ActionMQ整合 ... -
Spring中添加 Log4j注解
2010-08-16 13:49 2510参照别人的代码做了个Demo如下: Spring的加载时 ... -
Spring 的优秀工具类盘点,特殊字符转义和方法入参检测工具类
2010-08-16 13:46 999Spring 不但提供了一个功能全面的应用开发框架,本身还 ... -
Spring Web 相关工具类
2010-08-16 13:38 1017Web 相关工具类 您几乎总是使用 Spring 框架开 ... -
Spring 的优秀工具类盘点
2010-08-16 13:22 769Spring 不但提供了一个功能全面的 ... -
Spring ApplicationContext.xml配置的12个技巧
2010-08-16 13:08 1261Spring是一个强有力的ja ... -
Spring 中一个常用的反射类库ReflectionUtils
2010-08-16 13:05 4403在项目中部分方法采用反射,通过类访问类的属性,通过类反问方法, ... -
spring 的OpenSessionInViewFilter简介
2010-08-16 11:39 612假设在你的应用中Hibernate是通过spring 来管 ... -
使用hibernate3和Spring解决Oracle大字段(长文本)问题
2010-08-16 11:33 1471使用Oracle来存储长文本始终没Mysql ... -
Spring中Quartz的配置
2009-11-02 09:56 673Quartz是一个强大的企业级任务调度框架,Spring中继承 ... -
使用Spring2.5的Autowired实现注释型的IOC
2009-11-01 21:10 1004使用Spring2.5的新特性——Autowired可以实现 ... -
Spring声明式事务管理(下)
2009-11-01 20:58 1167三.用BeanNameAutoProxyCreator自动 ...
相关推荐
以上就是Spring注解方式实现AOP的一些核心细节。通过这种方式,我们可以方便地在不修改原有代码的情况下,为服务添加额外的功能,实现代码的解耦和复用。不过,需要注意的是,过度使用AOP可能会导致代码可读性和可...
文档"spring注解完整版"可能涵盖了Spring框架中所有可用的注解及其用法,对于理解和掌握Spring框架的注解配置非常有帮助。"spring data jpa官方文档中文翻译"则提供了Spring Data JPA的详细指南,包括其设计原理、...
标题 "s2sh+springSecurity的注解配置例子" 提供了一个关于整合Spring Security与Struts 2(S2)和Hibernate(SH)框架的注解配置实践的线索。这通常涉及到在Java web应用程序中创建一个安全的环境,通过利用Spring ...
例如,在使用JPA注解配置ORM映射时,如果实体类属性与数据库字段名称和类型一致,那么几乎无需编写任何额外的映射信息,反射机制将自动处理这些细节。 2. **增强程序内聚性**:将配置信息与Java代码放在同一个文件...
以下是对"spring注解事务管理"这一主题的详细解释。 ### 1. Spring事务管理的基本概念 Spring事务管理主要分为两种方式:编程式事务管理和声明式事务管理。编程式事务管理是通过编写代码来控制事务的开始、提交、...
这种方式使得开发者可以更加专注于业务逻辑,而无需关心复杂的配置细节。 ##### 注解概述 - **`@Component`**: 标记类作为组件,是Spring的基本注解,用于定义泛型的组件。 - **`@Repository`**: 用于标记数据访问...
本文档是关于Spring注解开发的总结,涵盖了Spring开发的核心概念,如IOC(控制反转)、DI(依赖注入)、AOP(面向切面编程)和事务管理等,以及与传统的XML配置方式相比的差异和优势。文档通过实际的注解例子来解释...
至此,我们完成了Spring注解与Hibernate的整合。这个过程使得开发人员可以专注于业务逻辑,而无需过多关注数据访问层的细节。在实际项目中,还可以进一步优化,比如使用JPA(Java Persistence API)替换Hibernate,...
#### 二、Spring注解图示与分类 ##### 2.1 Spring-Context 模块的注解图 - **@Component**: 用于标记任何Java类作为Spring中的一个组件。该注解通常配合`<context:component-scan>`使用,以便Spring能够自动检测和...
接收消息通常通过监听器接口实现,如MessageListener,或使用`@JmsListener`注解(Spring 4.1及以上版本)。 5. 负载均衡和容灾:由于ActiveMQ服务器使用Zookeeper进行复制,客户端配置可能需要指定Zookeeper的...
总的来说,Spring注解提供了一种简洁、直观的方式来管理Bean和依赖注入,让开发者能更专注于业务逻辑,而非配置细节。随着Spring框架的发展,注解配置的应用越来越广泛,成为现代Java企业级应用开发的标准实践之一。
下面,我们将深入探讨Spring集成ActiveMQ的具体配置和实现细节。 ### 集成环境 首先,确定所使用的软件版本至关重要。本文中提到的Spring版本为2.5.6,ActiveMQ版本为5.4.2,这两个版本在当时(注意时间背景)是...
虽然我们主要使用注解配置,但仍然需要一个基本的配置来启动Spring MVC。在XML配置中,我们需要声明`DispatcherServlet`并配置`<mvc:annotation-driven>`以启用注解驱动: ```xml <beans xmlns="http://www.spring...
Spring 框架注解扫描开启之配置细节 Spring 框架提供了灵活的方式来装配 Bean,包括在 XML 中进行显示配置、在 Java 中进行显示配置、隐式的 bean 发现机制和自动装配。自动装配实现需要注解扫描,这时发现了两种...
注解在Spring MVC中扮演着核心角色,它们提供了声明式编程,使得开发者能够以更简洁的方式配置和控制应用程序的行为。 1. **@Controller**:这个注解标记一个类作为Spring MVC的控制器。控制器类处理来自客户端的...
Spring框架与注解配置** Spring框架提供了多种注解,如`@Component`,`@Service`,`@Repository`和`@Controller`,用于标记类为特定的Spring Bean。这些注解使得无需XML配置,就能将类纳入Spring容器的管理,简化了...
本文将深入探讨Spring与Spring MVC的整合配置,并结合标签"源码"和"工具"来解析相关的技术细节。 首先,Spring框架的核心特性包括依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented ...
综上所述,Spring Data Redis通过注解的方式大大简化了与Redis的集成,使得开发人员能够更加专注于业务逻辑,而不需要关心底层缓存的实现细节。这种方式既提高了代码的可读性,也提高了开发效率。在实际项目中,合理...