- 浏览: 119204 次
- 性别:
- 来自: 合肥
文章分类
- 全部博客 (86)
- Web Page (23)
- Java (5)
- Web Security (7)
- Cache (0)
- Message (0)
- CAS (3)
- 开源系统 (2)
- my systems (2)
- Apache Chemistry and Jackrabbit (1)
- Jquery (1)
- spring (8)
- 虚拟主机部署 (3)
- ORM (3)
- myeclipse eclipse (5)
- full index (1)
- 公式编辑器 (1)
- 网页编辑器 (1)
- junit4 (1)
- 飞鸽传书 (1)
- centos install (1)
- maven (1)
- hibernate (1)
- tomcat (5)
- eclipse (4)
- 工具 (1)
- mysql (2)
- tomcat jndi + spring配置 (1)
- goagent (0)
- html video (1)
- ckeditor (0)
- getResourceAsStream (1)
- online education project (1)
- Mac (1)
- Chrome (1)
- dev-tool (1)
最新评论
-
107x:
谢谢分享
Eclipse下使用maven开发web项目 -
a604346146:
如果你关闭该界面时,session没有注销,你不能再登录进去, ...
spring security 同步session控制 -
Jekey:
...
已有windows 7下硬盘安装CentOS 6.x
假设有命名空间x
XSD:http://www.springframework.org/schema/x/spring-x-3.0.xsd
位置:org/springframework/aop/config/spring-x-3.0.xsd
xmlns:x=”http://www.springframework.org/schema/x”
引入命名空间x的声明
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:x="http://www.springframework.org/schema/x" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/x http://www.springframework.org/schema/x/spring-x-3.0.xsd > ………… Spring配置信息 </beans>
可叠加
Spring Annotation 简介
历史上, Spring 的配置最初只涵盖 XML 方式。但是 Spring 渐渐也与基于 annotation 的配置方式打成一片。到了 Spring2.5 ,已经提供超过 36 个 annotation 的支持了,这还不包括第三方类库和 Spring add-ons 。
Context Configuration Annoations
这一组 annotations 主要是让 Spring 来创建和注入 bean 对象的。
Transaction Annoations
@Transactional annotation 协同 <tx:annotation-driven> 元素用来为类或方法声明事务边界和规则
Stereotyping Annoations
这组 annotations 主要用在应用程序中各个层次中的 stereotype 类型。如果在 Spring 配置文件中还配置了 <context:component-scan> 元素,而且某个类还被标注了下列 annotation 的话,该类就会自动被注册到 Spring context 中去。
另外,如果一个 PersistenceExceptionTranslationPostProcessor 配置在 Spring context 中,那么任何标记了 @Repository annotation 的 bean 在方法执行过程中抛出的 SQLExceptions 会被转换成 Spring 的 unchecked DataAccessExceptions
Spring MVC Annoations
这组 annotations 到 Spring2.5 时才被引入。它让 Spring MVC 应用程序的创建变得更加容易,不仅将 XML 配置文件缩减到最小化,而且不需要去继承 Controller interface 的实现了。
JMX Annoations
这组 annotations 协同 <context:mbean-export> 元素,将 bean 的方法和属性声明为 MBean 的操作和属性。
Testing Annoations
这组 annotations 主要用来建立 JUnit4 风格的单元测试,但前提是得依赖于 Spring context 中定义的 beans 或一个 transactional context 。
Aop
XSD:http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
位置:org/springframework/aop/config/spring-aop-3.0.xsd
xmlns:aop=http://www.springframework.org/schema/aop
<aop:aspectj-autoproxy />和@Aspect
<aop:aspectj-autoproxy />配合注释@Aspect使用要求jdk1.5以上版本
定义一个Aspect
package com.sarkuya.aop.aspect; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; @Aspect public class SampleAspect { @Before("execution(* com.sarkuya.service..*.*(..))") public void doBeforeInServiceLayer() { System.out.println("Aop: do before in Service layer"); } }
在Spring文件中声明<aop:aspectj-autoproxy />和上面类的bean
<aop:aspectj-autoproxy /> <bean class="com.sarkuya.aop.aspect.SampleAspect" />
当用户调用com.sarkuya.service包中任一类的任一方法,在调用前,Spring将自动执行下面的doBeforeInServiceLayer()方法,此方法只是简单地打印一些信息
上面的Aspect中混杂了Pointcut及Advice,可以将其分开
定义Pointcut,方法签名必须是public及void型
package com.sarkuya.aop.aspect; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; @Aspect public class SampleAspect { @Pointcut("execution(* com.sarkuya.service..*.*(..))") public void inServiceLayer() {} }
定义Advice
package com.sarkuya.aop.advice; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; @Aspect public class SampleAdvice { @Before("com.sarkuya.aop.aspect.SampleAspect.inServiceLayer()") public void logInfo() { System.out.println("Aop: do before in service layer"); } }
<aop:aspectj-autoproxy /> <bean class="com.sarkuya.aop.advice.SampleAdvice"/>
只需配置SampleAdvice,无需配置SampleAspect。
不支持注解时
下面有一个例程来直观的展示如何使用<aop:config/>标签来配置Spring AOP(完整代码见例程4.15)。在例子中,我们使用<aop:config/>配置一个切面并拦截目标对象Peoples的 SayHello()方法,在它执行前输出提示信息。
package aop.test; public class People{ public String SayHello(String str){ System.out.println(this.getClass().getName()+ "说:"+str); return str; } }
package aop.test; import org.aspectj.lang.JoinPoint; public class MyAspect { public void beforeAdvice(JoinPoint point) { System.out.println("前置通知被触发:" + point.getTarget().getClass().getName()+ "将要" + point.getSignature().getName()); } }
<bean id="MyAspect" class="aop.test.MyAspect" /> <bean id="TestBean" class="aop.test.People" /> <aop:config proxy-target-class="true"> <aop:aspect ref="MyAspect" order="0" id="Test"> <aop:pointcut id="testPointcut" expression="execution(* aop..*(..))" /> <aop:before pointcut-ref="testPointcut" method="beforeAdvice" /> </aop:aspect> </aop:config>
Beans
XSD:http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
位置:org/springframework/beans/factory/xml/spring-beans-3.0.xsd
xmlns=”http://www.springframework.org/schema/beans”
默认Spring bean的声明
Bean 命名空间下的元素简介
Tool
XSD:http://www.springframework.org/schema/tool/spring-tool-3.0.xsd
位置:org/springframework/beans/factory/xml/spring-tool-3.0.xsd
xmlns:tool=”http://www.springframework.org/schema/tool”
使用在其他命名空间的的xsd文件中,使Spring支持自定义命名空间,不直接使用在Spring配置中
Util
XSD:http://www.springframework.org/schema/util/spring-util-3.0.xsd
位置:org/springframework/beans/factory/xml/spring-util-3.0.xsd
xmlns:utill=http://www.springframework.org/schema/util
1. <util:constant/>元素
将静态字段托管为bean
public static final String hwStatic = "hello static";
<util:constant id="hwConstant" static-field="test.HelloWorld.hwStatic"/>
2. <util:property-path/>元素
<util:property-path id="property-path" path="helloWorld.hello"/> <bean id="helloWorld"> <property name="hello" value="hi"/> </bean>
这里path=”helloworld.hello”就是指bean为”helloworld”的属性hello。
3. <util:properties/>元素
“classpath:”表明,将从类路径上查找并装载xxx属性文件.
<util:properties id="xxx" location="classpath:xxxxx.properties">
4. <util:list/>元素
<util:list id="listUtil" list-class="java.util.ArrayList"> <value>first</valuse> <value>two</valuse> <value>three</valuse> <value>ten</valuse> </util:list>
它的作用就是在spring启动初始化bean时,给listUtil这个list赋值为这四个值
5. <util:map/>元素
<util:map id="mapUtil" map-class="java.util.HashMap"> <entry key="1" value="first"> <entry key="2" value="two"> <entry key="3" value="three"> </util:map>
6. <util:set/>元素
<util:set id="setUtil" set-class="java.util.HashSet"> <value>first</value> <value>two</value> <value>three</value> </util:set>
分页
Context
XSD:http://www.springframework.org/schema/context/spring-context-3.0.xsd
位置:org/springframework/context/config/spring-context-3.0.xsd
xmlns:context=”http://www.springframework.org/schema/context”
context 命名空间主要用来提供多种 application context 特定的配置。它包括:支持基于 annotation 的配置方式, JMX 以及领域对象 (domain object) 的注入。
<context:component-scan> 元素会自动扫描指定包下的类,并自动将那些标记有 @Component, @Controller, @Repository, @Service 或 @Aspect. 的类全部注册到 Spring 容器中。
使用外部配置文件,我们可以使用 <context:property-placeholder>
<context:property-placeholder location=”file:////etc/pirate.properties” />
定义在 /etc/pirate.properties 属性文件中的那些键值对现在可以在 Spring 配置文件中调用
<bean id=”pirate” class=”Pirate”> <constructor-arg value=”${pirate.name}” /> </bean>
分页
Jee
XSD:http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
位置:org/springframework/ejb/config/spring-jee-3.0.xsd
xmlns:jee=http://www.springframework.org/schema/jee
<jee:remote-slsb id=”hispaniola” jndi-name=”ejb/PirateShip” business-interface=”com.pirate.PirateShipEjb” resource-ref=”true” /> <jee:jndi-lookup id=”parrot” jndi-name=”pirate/Parrot “ resource-ref=”false” />
第一个元素 <jee:remote-slsb> 配置了一个叫“ Hispaniola ”的 bean ,它实际上引用的是一个 EJB2 的 remote stateless session bean 。这里 EJB 的 home interface 可以通过 JNDI 名称“ java:comp/env/ejb/PirateShip ”找到。属性“ resource-ref ”表示应该值会自动加上“ java:comp/env/ ”前缀。 EJB 的实现方法定义在 PirateShipEjb 业务接口中。
另一个元素 <jee:jndi-lookup> 用于从 JNDI 获取对象的引用(它可以是一个 EJB3 session bean 或一个普通 pojo )。对象会在这个叫“ pirate/Parrot ”的 JNDI 中获得。注意这里我们将“ resource-ref ”属性配置为“ false ”,所以应该 jndi-name 不会加上“ java:comp/env ”前缀。
Lang
XSD:http://www.springframework.org/schema/lang/spring-lang-3.0.xsd
位置:org/springframework/scripting/config/spring-lang-3.0.xsd
xmlns:lang=http://www.springframework.org/schema/lang
<bean id=”jackSparrow” class=”Pirate”> <constructor-arg value=”Jack Sparrow” /> <property name=”compass” ref=”compass” /> <property name=”hat” ref=”hat” /> </bean> <lang:groovy id=”compass” script-source=”classpath:Compass.groovy” refresh-check-delay=”10000” /> <lang:jruby id=”hat” script-source=”classpath:PirateHat.rb” script-interface=”PirateHat” refresh-check-delay=”60000” />
<lang:groovy> 元素建了一个由 Groovy script 实现的 bean ,名字叫 Compass.groovy 并且放在 classpath 的根目录下。 refresh-check-delay 属性表示每 10 秒钟看看该 script 是否改变了,然后对其进行相应的 update 和 reload 操作。
<lang:jruby> 元素建了一个由 Ruby( 指定为 JRuby) script 实现的 bean ,名字叫 PirateHat.rb 。它实现了 PirateHat 接口并每分钟都会检查是否需要 update 。
Task
XSD:http://www.springframework.org/schema/task/spring-task-3.0.xsd
位置:org/springframework/scheduling/config/spring-task-3.0.xsd
xmlns:task=”http://www.springframework.org/schema/task”
可以部分去取代 quartz,并且支持注解方式。但是如果使用更加复杂的任务调度。还是建议是使用quartz。以下就使用 task 和 quartz来进行任务调度的方法进行距离
package com.alcor.aerie.quartz; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; @Service public class TestJob { /** * Logger for this class */ private static final Logger logger = LoggerFactory.getLogger(TestJob.class); @Scheduled(fixedDelay = 1000) public void work() { if (logger.isDebugEnabled()) { logger.debug("work() - start"); //$NON-NLS-1$ } logger.info("Spring Quartz的TestJob任务被调用!"); if (logger.isDebugEnabled()) { logger.debug("work() - end"); //$NON-NLS-1$ } } }
注意其中的@Scheduled 标签
<task:annotation-driven/>
不使用注解,而通过配置来调度任务
<task:scheduled-tasks> <task:scheduled ref="testJob" method="work" cron="1/3 * 2-23 * * ?"/> </task:scheduled-tasks>
分页
Jdbc
XSD:http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
位置:org/springframework/jdbc/config/spring-jdbc-3.0.xsd
xmlns:jdbc=”http://www.springframework.org/schema/jdbc”
Jms
XSD:http://www.springframework.org/schema/jms/spring-jms-3.0.xsd
位置:org/springframework/jms/config/spring-jms-3.0.xsd
xmlns:jms=”http://www.springframework.org/schema/jms”
<bean id=”connectionFactory” class=”org.apache.activemq.ActiveMQConnectionFactory”> <property name=”brokerURL” value=”tcp://localhost:61616” /> </bean> <bean id=”messageHandlerService” class=”com.pirate.Message¬HandlerImpl” /> <jms:listener-container connection-factory=”connectionFactory”> <jms:listener destination=”queue.bottle” ref=”messageHandlerService” method=”readMessageFromBottle” /> </jms:listener-container>
<jms:listener-container> 配置了一个容器,专门用于处理到达 JMS connection factory 里的 topics 或 queues 的消息。在这个元素里,你可以声明一个或多个 <jms:listener> 元素,用来响应各自的 topics 。在这个例子中,单独的 <jms:listener> 会在消息到达“ queue.bottle ”这个 topic 时,调用“ messageHandlerService ” bean 的 readMessageFromBottle() 方法。
Oxm
XSD:http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd
位置:org/springframework/oxm/config/spring-oxm-3.0.xsd
xmlns:oxm=”http://www.springframework.org/schema/oxm”
Tx
XSD:http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
位置:org/springframework/transaction/config/spring-tx-3.0.xsd
xmlns:tx=”http://www.springframework.org/schema/tx”
<tx:jta-transaction-manager /> <tx:advice id=”txAdvice”> <tx:attributes> <tx:method name=”plunder*” propagation=”REQUIRED” /> <tx:method name=”*” propagation=”SUPPORTS” /> </tx:attributes> </tx:advice> <aop:config> <aop:advisor pointcut=”execution(* ..Pirate.*(..))” advice-ref=”txAdvice” /> </aop:config>
<tx:jta-transaction-manager> 已经加入到 Spring2.5 中用于自动检测由 WebLogic , WebSphere 或 OC4J 提供的 JTA 事务管理。它默认是以叫“ transactionManager ”的 bean 配置在 Spring context 中的。
接下来, <tx:advice> 建立了一个 AOP advice 用于声明事务处理规则。在这个例子中,任何以“ plunder ”为前缀的方法都会得到一个事务。其它方法的规则则是“ support ”事务,并不要求一定会有事务来参与。最后,这个从先前 aop 命令空间借用的例子使用了具备事务性质的 advice 来配置成一个 AOP advistor 。定义在这儿的 pointcut 只对 Pirate 类的所有方法起作用。
Java 事务配置规则
如果你正在考虑压缩 Spring 配置的 XML 数据的话,考虑用 <tx:annotation-driven> 元素试试吧。一旦该元素配置好了,你可以使用开始使用 annotation 来配置你的 beans ,而且只要使用 @Transactional 来定义事务边界和规则即可。你可以看看 Spring In Action 2nd 第六章 6.4.4 节了解更多内容。
Mvc
XSD:http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
位置:org/springframework/web/servlet/config/spring-mvc-3.0.xsd
xmlns:mvc=”http://www.springframework.org/schema/mvc”
发表评论
-
spring security的message设置
2012-07-31 09:48 1473系统用了springsecurity2.06, 信息的设置要在 ... -
在Web中任意位置得到Spring ApplicationContext
2012-07-12 17:17 889Access the Spring-ApplicationCo ... -
springSecurity错误IllegalArgumentException: SessionIdentifierAware did not return
2011-11-16 08:42 1350remeberService和concurrent控制同时使用 ... -
我的spring security配置demo文件
2011-11-02 14:59 2194<?xml version="1.0&q ... -
使用 Spring Security 保护 Web 应用的安全(转)
2011-10-11 08:37 960使用 Spring Security ... -
Spring 3 transaction management
2011-09-21 10:05 816Spring 3 transaction manageme ... -
Spring事务配置的五种方式
2011-09-14 08:43 771http://www.javafun.cn ...
相关推荐
包含spring 3.0.5的所有jar文件: org.springframework.aop-3.0.5.RELEASE.jar org.springframework.asm-3.0.5.RELEASE.jar org.springframework.aspects-3.0.5.RELEASE.jar org.springframework.beans-3.0.5.RELEASE...
标题中的"Mybatis3.0.5 and Spring3.0.5jar"暗示了这是一个关于集成Mybatis和Spring框架的讨论,特别关注的是Mybatis的3.0.5版本和Spring的3.0.5版本。这两个框架在Java开发中被广泛用于持久层操作和依赖注入。接...
Spring3.0.5帮助文档 Spring3.0.5帮助文档 Spring3.0.5帮助文档
Spring框架是Java开发中不可或缺的一部分,它以其模块化、松耦合和强大的依赖注入特性而闻名。Spring 3.0.5是该框架的一个稳定版本,发布于2010年,提供了许多改进和新特性。这个“spring3.0.5架包”包含了Spring...
这个模块是Spring MVC的实现,它是Web应用开发的重要部分。它提供了模型-视图-控制器架构,用于处理HTTP请求,解耦业务逻辑和用户界面。它还支持视图解析、本地化、主题等特性。 4. **org.springframework.web-...
Spring3.0.5及其依赖包,包括: spring-framework-3.0.5.RELEASE.zip spring-framework-3.0.5.RELEASE-dependencies.rar
Spring MVC是Spring框架的一部分,它提供了一个用于构建Web应用程序的模型-视图-控制器设计模式实现。它与Spring的其他组件紧密集成,如数据访问、事务管理等,提供了一种强大的、灵活的Web应用开发方式。 9. **...
"spring 3.0.5 集成cxf"这一主题聚焦于如何将Spring 3.0.5版本与Apache CXF整合,以实现高效、灵活的服务治理。 Spring 3.0.5是Spring框架的一个稳定版本,它引入了许多增强功能和改进,包括更好的类型安全依赖注入...
Spring框架是Java开发中最常用的轻量级框架之一,它的3.0.5版本是一个重要的里程碑,在这个版本中,Spring引入了许多新特性和改进。这里,我们主要探讨Spring 3.0.5的核心概念、设计原则以及它在lib包中的依赖。 **...
7、Spring MVC 3.0.5 详解Spring MVC 是 Spring 框架的一部分,用于构建 Web 应用。3.0.5 版本引入了对 RESTful 风格的支持,使得 API 设计更加简洁。通过注解,如 `@Controller`、`@RequestMapping`、`@Autowired` ...
spring3.0.5帮助文档spring3.0.5帮助文档spring3.0.5帮助文档spring3.0.5帮助文档spring3.0.5帮助文档spring3.0.5帮助文档spring3.0.5帮助文档spring3.0.5帮助文档
5. **MVC框架**:对于Web开发,Spring MVC是Spring的一个重要组成部分。它提供了一个模型-视图-控制器架构,使开发者能有效地分离业务逻辑、数据展示和用户交互。Spring MVC支持各种视图技术,如JSP、FreeMarker,...
以上只是Spring 3.0.5中部分关键知识点的概述,实际上,这个版本还包含了更多功能和改进,如对AspectJ的增强支持、WebSocket支持、任务调度等。了解并掌握这些知识点,可以帮助开发者充分利用Spring框架,提高开发...
Spring 3.0.5是Spring框架的一个重要版本,它在Spring框架的发展历程中占据了显著的位置。这个版本引入了许多新特性和改进,旨在提高开发效率和应用的可维护性。以下将详细介绍Spring 3.0.5的核心组件及其重要知识点...
Spring框架是Java开发中不可或缺的一部分,它以其模块化、易用性和灵活性著称。Spring 3.0.5是该框架的一个稳定版本,包含了多个jar包,每个jar包都有其特定的功能和用途。以下是这些jar包的主要作用和相关知识点: ...
标题中的"spring3.0.5_hibernate3.5.3_struts2.2.1整合jar包"指的是一个集合了Spring 3.0.5、Hibernate 3.5.3和Struts 2.2.1框架的整合包。这个资源是经过作者亲自测试的,被认为是最优的选择。它不仅提供了这三个...
从Spring 2.0升级到Spring 3.0.5是一个重要的版本迭代,因为每个新版本通常会引入新的特性和性能优化。 Spring 2.0是Spring框架的一个里程碑,它引入了AOP代理、JDBC抽象层、对JSF的支持以及对portlet的集成。然而...
本方案提供了一种集成化的开发环境,即"MyEclipse7.5+flex4+spring3.0.5+struts2.2.1+hibernate3.6.0+blazeds4.0.0.14931完美整合方案",它将多个流行的技术框架整合在一起,为Web应用程序开发提供了一个强大的平台...
在本示例中,我们探讨的是使用Spring 3.0.5版本的MVC框架以及Hibernate 3.6.10版本的集成,构建一个基于注解的注册登录应用。这个压缩包文件“springMVC_demo01”包含了实现这个功能的所有必要组件和配置。 首先,...
《Spring 3.0.5与AOPAlliance-1.0在Java开发中的应用》 Spring框架作为Java企业级应用开发的重要支柱,其3.0.5版本的发布为开发者提供了更为强大和灵活的工具集。这个版本的Spring不仅在核心功能上进行了优化,还对...