四 28
假设有Service方法类似UserService
package com.hjide.aop;
public interface UserService {
public User getUser(int id) throws Exception;
public void save(User u) throws Exception;
public int delete(User u) throws Exception;
}
实现类似如下
package com.hjide.aop;
public class UserServiceImpl implements UserService {
public int delete(User u) throws Exception{
System.out.println("delete");
return 0;
}
public User getUser(int id) throws Exception {
User u = new User();
u.setId(1);
u.setName("new user");
u.setType(2);
System.out.println("getUser");
return u;
}
public void save(User u) throws Exception {
System.out.println("save");
}
}
更多详细内容 »
Tags:
aop,
Spring 作者:Jock
六 18
以下是我在其它论坛上发表的问题:
QUOTE:
我采用AbstractDependencyInjectionSpringContextTests进行测试,通过以下代码进行加载.
protected String[] getConfigLocations() { return new String[] { "classpath:springapplicationcontext.xml" }; }
以下是我原来的配置文件:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
字串1
</property>
<property name="url">
<value>jdbc:oracle:thin:@localhost:1521:oracle9</value>
</property>
<property name="username">
<value>gap</value>
</property>
<property name="password">
<value>gap</value>
</property>
</bean> 字串3
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" /> 字串9
</bean>
<bean id="gapdictionaryDao" class="org.gap.dao.GapdictionaryDao">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="gap" class="org.gap.service.GapImpl">
<property name="gapdictionaryDao" ref="gapdictionaryDao" />
</bean>
</beans>
以下是我新的配置文件: 更多详细内容 »
Tags:
Spring,
事务 作者:Jock
三 25
首先来2个最简单的bean
package example;
/**
* @author jockhuang
*
*/
public class TestA {
public void sayHello(){
System.out.println("TestA");
}
}
package example;
public class TestB {
public void sayHi(){
System.out.println("TestB");
}
}
2个很简单的bean,applicationContext.xml中的配置如下:
< ?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:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
<bean id="TestA" class="example.TestA"></bean>
<bean id="TestB" class="example.TestB"></bean>
</beans>
来个测试运行这2个bean
package example;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public final class TestAOP {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
TestA a = (TestA) ctx.getBean("TestA");
a.sayHello();
TestB b = (TestB) ctx.getBean("TestB");
b.sayHi();
}
}
更多详细内容 »
Tags:
Spring,
源码 作者:Jock
三 17
Spring_2.0_Reference_zh_CN.chm
Spring 2.0 中文参考手册 chm下载
Tags:
Spring,
下载,
参考手册 作者:Jock
一 24
最后一节中详细说明了从Spring 1.2.x移植到Spring 2.0的过程中可能出现的问题。
先让我们来有所保留地看看下面这句话, 从Spring 1.2移植到Spring 2.0应该就是简单地把Spring 2.0的jar文件放进应用程序目录中的合适位置。
上一句话的关键字理所当然是“应该”。 到底是不是无缝升级依赖于你的代码中究竟用了多少Spring API。 Spring 2.0移除了很多在Spring 1.2.x代码库中标为deprecated的代码,所以如果你用了这些类或方法, 你应该使用它们的替代类或方法(下面总结了些)。
关于配置,Spring 1.2.x风格的XML配置与Spring 2.0完全兼容。你仍然可以继续使用Spring 1.2.x DTD, 不过这样你就不能充分利用一些Spring 2.0的新功能(例如作用域、 更易用的AOP 和 事务配置), 但绝对不会有问题。
建议的移植策略是放入Spring 2.0的jar文件以便能使用改进过的代码(修正bug、优化等等)。 然后增量地开始尝试Spring 2.0的新特性和配置。例如,你可以选择先在切面配置上运用Spring 2.0风格作为开始; 90%的旧式Spring 1.2.x配置(引用1.2.x DTD)加上10%的Spring 2.0配置(引用2.0 DTD和XSD)是完全有效的。要记住, 在使用Spring 2.0库的同时并非一定要升级XML配置。
2.7.1. 一些变化
如需了解全部变化,请参考Spring Framework 2.0发布包顶层目录里的'changelog.txt'文件。
2.7.1.1. Jar包
1.2.x和2.0的Spring Framework jar文件有很多不同之处。 特别是现在JDO、Hibernate 2/3、TopLink的ORM集成类有专门的jar文件:它们不再被打包在核心文件 'spring.jar'中了。
2.7.1.2. XML配置
Spring 2.0的XSD在描述Spring XML元数据格式方面比先前的DTD更丰富。 旧的DTD仍然得到支持,但如果可能我们鼓励在bean定义文件头部引用XSD文件。
有一点被改变了,那就是定义bean作用域的方式。如果你使用的是Spring 1.2 DTD,那么你能继续用'singleton'属性。 如果你选择引用新的Spring 2.0 DTD,它不允许使用'singleton'属性, 那么可以用'scope'属性来定义bean的生命周期作用域。
2.7.1.3. Deprecated的类和方法
一些以前被标记为@deprecated的类和方法Spring 2.0代码库中被完全删除了。 Spring团队决定把2.0版本作为一个新的开始,那些被deprecated的代码应该被除去而不是在可预见的未来继续在代码中出现。
就如前面所说的,如需了解全部变化,请参考Spring Framework 2.0发布包顶层目录里的'changelog.txt'文件。
下面的类/接口已经从Spring 2.0的代码中删除了。
ResultReader : 使用RowMapper接口代替。
BeanReferenceFactoryBean : 使用别名机制代替
BeanDefinitionRegistryBuilder : 使用BeanDefinitionReaderUtils类上的方法代替
BeanFactoryBootstrap : 考虑使用一个BeanFactoryLocator 或是自定义引导类代替
RequestUtils : 使用ServletRequestUtils代替
2.7.1.4. Apache OJB
请注意Spring主代码中的Apache OJB支持被完全删除了; 但仍然可以在Spring Modules项目中找到Apache OJB的集成库。
2.7.1.5. iBatis
请注意iBATIS SQL Maps 1.3支持被完全去除了。如果你还在使用iBATIS SQL Maps 1.3, 请升级到iBATIS SQL Maps 2.0/2.1。
Tags:
参考手册 作者:堕落天使
一 24
最后部分罗列了所有其他关于Spring 2.0的新特性与改进特性。
2.6.1. 动态语言支持
Spring 2.0现在支持用非Java语言编写的bean,当前支持的动态语言包括JRuby,Groovy和BeanShell。标题为 第 24 章 动态语言支持 部分描述了动态语言支持的细节。
2.6.2. JMX
Spring Framework开始支持通知(Notification); 还可以声明式地控制MBean在一个MBeanServer上的注册行为。
第 20.7 节 “通知”
第 20.2.5 节 “控制注册行为”
2.6.3. 任务规划
关于任务规划,Spring 2.0 提供了一种抽象。对于感兴趣的开发人员,标题为 第 23.4 节 “SpringTaskExecutor抽象” 的部分提供了所有的细节。
2.6.4. 对Java 5(Tiger)的支持
如果你有幸使用Java 5(Tiger)进行项目开发,你将很高兴地发现,Spring 2.0对于Tiger有一些非常引人注目的支持。下面是一系列Spring Java 5 独有特性的指南
第 9.5.8 节 “结合AspectJ使用 @Transactional”
第 6.8.1 节 “在Spring中使用AspectJ来为domain object进行依赖注入”
第 6.2 节 “@AspectJ支持”
第 25.3.1 节 “@Required”
第 11.2.3 节 “SimpleJdbcTemplate类”
Tags:
参考手册 作者:堕落天使
一 24
在Spring 2.0里,web层支持得到了 充分地 改进和扩展。
2.5.1. Spring MVC的表单标签库
Spring MVC丰富的JSP标签库 来自 JIRA,其中的绝大部分是Spring用户(范围很广的用户)通过投票方式产生的。
Spring 2.0拥有一个丰富的JSP标签库,在使用Spring MVC时,编写JSP页面变得更加简单;Spring团队自信地认为它将满足所有在JIRA上投票的开发人员的需要。在标题为 第 13.9 节 “使用Spring的表单标签库” 的部分描述了新的标签库,标题为 附录 E, spring-form.tld 的附录部分是对所有新标签的快速指南。
2.5.2. Spring MVC合理的默认值
对于很多项目而言,遵守建立好的规范,使用合理的默认值,是项目所必须的… 现在在SpringMVC里,惯例优先(convention-over-configuration)的观点有了明确的支持。 这就意味着当你为控制器和视图建立一系列的命名规范时,你可以 充分 减少XML配置的数量,包括设置处理映射、视图解析、ModelAndView的实例等等。 对于开发快速原型来说,这有非常大的优势,并且越过代码库可以产生一定的连续性(通常是良好的)。
在标题为 第 13.11 节 “惯例优先原则(convention over configuration)” 的部分,可以发现对Spring MVC的惯例优先支持的详细内容。
2.5.3. Portlet 框架
Spring 2.0 设计了一种概念上类似于Spring MVC框架的Porlet框架。标题为 第 16 章 Portlet MVC框架 的部分可以找到详细的介绍。
Tags:
参考手册 作者:堕落天使
一 24
2.4.1. 在XML里更为简单的声明性事务配置
Spring 2.0关于事务的配置方式发生了重大的变化。早先的1.2.x版本的配置方式仍然有效(并且受支持),但是新的方式明显更加简洁,并成为最推荐的方式。 Spring 2.0 同时提供了AspectJ切面库,你可以使用它来生成更漂亮的事务性对象 – 甚至可以不是由Spring IoC容器产生的。
标题为 第 9 章 事务管理 的部分包含所有的细节。
2.4.2. JPA
Spring 2.0提供了JPA抽象层,在所起的作用与常规使用模式上,类似于Spring的JDBC抽象层。
如果你对使用实现JPA作为自己持久层的基础感兴趣,标题为 第 12.6 节 “JPA” 的部分专门描述了在这个领域Spring的支持与附加值。
2.4.3. 异步的JMS
在Spring 2.0之前,Spring的JMS的作用局限于发送消息和同步接收消息。 这个功能(封装在 JmsTemplate 类中)当然是很好的, 但是,它没有满足异步消息接收的需要。
Spring 2.0现在提供对异步消息接收的完整支持。在标题为 第 19.4.2 节 “异步接收 – 消息驱动的POJOs” 的部分有详细的描述。
2.4.4. JDBC
在Spring的JDBC支持库中,有几个小的(但同样值得注意的)新类。首先,NamedParameterJdbcTemplate, 提供了在编写JDBC语句时,对使用命名参数(与之相对的是编写JDBC语句时只使用常规的占位符('?'))的支持。
另一个新类,SimpleJdbcTemplate, 致力于在使用Java 5+ (Tiger)开发时更加简单地使用JdbcTemplate。
Tags:
参考手册 作者:堕落天使
一 24
Spring 2.0在AOP上有很大的改进。Spring AOP框架本身就十分易于用XML配置,不再那么繁琐;Spring 2.0集成了AspectJ 切入点(pointcut)语言和 @AspectJ 切面(aspect)声明类型。 标题为 第 6 章 使用Spring进行面向切面编程(AOP) 的部分专门描述这个新支持。
2.3.1. 更加简单的AOP XML配置
Spring 2.0引入了新的模式,支持定义从常规Java对象中发展中来的切面。 此支持充分利用了AspectJ切入点语言,提供了完整类型的通知(advice)(也就是没有多余转换和 Object[] 参数操作)。 标题为 第 6.3 节 “Schema-based AOP support” 的部分详细描述了该支持的细节。
2.3.2. 对@AspectJ 切面的支持
Spring 2.0也支持使用@AspectJ注解定义的切面。这些切面可以在AspectJ与Spring AOP中共享,仅仅需要(老实说!)一些简单的配置。 在标题为 第 6.2 节 “@AspectJ支持” 的部分讨论了对@AspectJ切面的支持。
Tags:
参考手册 作者:堕落天使
一 24
Spring 2.0 相当大的改进之一就是Spring的IoC容器。
2.2.1. 更简单的XML配置
多亏了新的基于XML Schema的XML配置语法的产生,Spring的XML配置变的更加简单了。如果你想充分利用Spring提供的新标签(Spring团队当然建议你这么做,因为他们使配置变的不再繁琐,更加易于阅读),请阅读标题为 附录 A, XML Schema-based configuration 的部分。
相关提示,请引用新的Spring 2.0 DTD以使用基于XML Schema的配置。下面给出了DOCTYPE声明,如果有兴趣的读者可以详细阅读Spring 2.0发布包的 'dist/resources'目录中的'spring-beans-2.0.dtd' DTD。
”http://www.springframework.org/dtd/spring-beans-2.0.dtd”>
2.2.2. 新的bean作用域
Spring上个版本的IoC容器支持两个不同的bean作用域(单例与原型)。Spring 2.0改进了这一点,不仅提供了一些依赖于Spring部署环境(比如说,在web环境中的request和session作用域bean)的额外的作用域,而且提供了所谓的'钩子'('hooks')(因为找不到更好的表达)使Spring用户可以创造自己的作用域。
应该注意的是,即使单例与原型作用域beans的基本(内在)实现发生了变化,上述变化对最终用户来说是透明的…现有的配置不需要改变或放弃。
在标题为 第 3.4 节 “bean的作用域” 的部分有对新增的作用域与原有作用域的详细描述。
2.2.3. 可扩展的XML编写
XML配置不仅更加易于书写,而且也具有可扩展性。
这里'可扩展性'的含义是,作为一个应用程序开发人员,或着(更可能)作为第三方框架或产品的供应商,可以开发自定义标签,供其他开发人员把这些标签嵌入到自己的Spring配置文件里。你可以在组件的特定配置中定义你自己的DSL(domain specific language,这个词在这里用得比较宽泛)。
对于个别应用的开发人员或者在项目中运用Spring的企业架构师来说,实现自定义Spring标签可能不是他们的兴趣所在。我们期待着第三方供应商能够对开发在Spring配置文件里使用的自定义配置标签予于足够的关注。
可扩展的配置机制在 附录 B, Extensible XML authoring 里有更充分的描述。
Tags:
参考手册 作者:堕落天使
近期评论