- 浏览: 1228460 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (883)
- Spring (101)
- Swing (1)
- Mysql (21)
- Js (59)
- Jsp (2)
- Hibernate (19)
- Myeclipse (5)
- SqlServer 2000 (2)
- poi (15)
- Java (70)
- SSH (12)
- Html (47)
- Fusion Charts (1)
- C\C++ (2)
- 汇编 (36)
- Jquery (37)
- Struts2 (6)
- Ubuntu (16)
- powerDesinger (4)
- Jboss (3)
- JAX-RS (13)
- JAXB (5)
- JAX-WS (11)
- JMS (4)
- WebSocket (8)
- PHP (16)
- Flash (1)
- maven (3)
- Oracle (8)
- HttpClient (6)
- sqlserver (19)
- svn (5)
- Tomcat (3)
- Jdbc (3)
- EsayUi (11)
- 微信公众平台 (19)
- IIS (2)
- Freemarker (11)
- Comet (1)
- Spring MVC (85)
- JBoss Seam (3)
- 二维码 (9)
- Spring Security (4)
- Ehcache (3)
- Apache Shiro (7)
- jackson (16)
- JPA (8)
- jcaptcha (2)
- RSA (2)
- Ajax (6)
- 跟我学Shiro (0)
- Spring4 (19)
- 跟我学spring3 (0)
- css (32)
- excel (4)
- Filter (3)
- 微信公众帐号开发教程 (0)
- Android (6)
- log4j (6)
- 淘宝接口 (17)
- 支付集成 (3)
- 单点登录 (3)
- Html5 (27)
- 移动平台前端 (3)
- Linux (44)
- FusionCharts (27)
- Json Jackson Xml (5)
- 方培工作室-微信开发 (0)
- Apache与Tomcat与IIS整合 (10)
- Nginx (17)
- webService (2)
- apache (4)
- lucene (3)
- lodop (2)
- Shiro (3)
- zTree (2)
- ireport (12)
- Servlet3.0 (5)
- 前端美工 (19)
- AngularJS (1)
- C#开发微信门户及应用 (0)
- Shell (3)
- bat脚本 (16)
- Bootstrap (26)
- Less (10)
- photoshop (6)
- Redis (6)
- Mongodb (10)
- MyBatis (3)
- 数据结构 (0)
- 读写分离-主从复制 (0)
- JFinal (0)
- 百度地图api (3)
- hadoop-hbase-hive-spark (3)
- WebStorm (2)
- Quartz (5)
- ios (0)
- Mina (8)
- Android Studio (4)
- Ratchet教程 (0)
- 移动端重构系列 (1)
- cubic-bezier贝塞尔曲线CSS3动画工具 (1)
- nginx+tomcat+memcached集群 (0)
- 集群 (0)
- ZooKeeper (3)
- Dubbo (0)
- vpn (0)
- kafka (0)
- JVM垃圾回收机制 (0)
- 微信小程序 (0)
- Lua (0)
- Hystrix (0)
- Vue.js (0)
- mycat (0)
- Openresty (0)
- springBoot (0)
- 新分类 (0)
- guava (0)
- 大数据 (0)
- Sentinel (0)
最新评论
-
JackMacing:
中文怎么解决?
SpringMVC与iReport(JasperReports) 5.6整合开发实例 -
18335864773:
用pageoffice把.可以实现在线的文档操作.直接转pdf ...
转:使用jasperreport动态生成pdf,excel,html -
linhao0907:
推荐一款轻量开源的支付宝组件:https://github.c ...
关于Alipay支付宝接口(Java版) -
songronghu:
太好了,非常有用,谢谢分享~
Java ConcurrentModificationException 异常分析与解决方案 -
wzwahl36:
http://www.atool.org/json2javab ...
Java下利用Jackson进行JSON解析和序列化
上一篇文章还有些话没说完,没想到一拖就是2周,所以干脆另开一篇吧。
从回帖的反应来看,大多数人还是不赞成完全代替XML的,这点倒是在意料之中。我个人还是倾向于用代码来取代XML的Bean定义,当然这更多的是关乎个人偏好,不代表与我观点不同的人就是错的。
先来说说代码相对于XML的优点吧:
1. 更加简洁,相对于XML的“语法”,java来得更熟悉
2. 类型安全,更大程度上发挥java静态语言的特性
3. 对重构更加友好
再说说用annotation代替XML的可能性吧,目前看来是不大可能,主要还存在以下的限制:
1. java的语言文化
不知道还有哪门语言比java更加依赖XML,尤其是做web开发。在JDK5之前,没有annotation的时代,用XML来记录一些补充语义,似乎也没有比这更理想的方案。这些年用着用着大家就习惯了,于是不再有人去质疑。回头看看平时使用的各种大大小小的框架,除了Bob Lee开发的google guice,没有哪个从最初的设计开始就抛开XML的,在java主流文化的影响下拿出这么“非主流”的作品,难怪他自称crazybob。好在这些情况在慢慢好转,annotation以及CoC等观念被越来越多的人接受。
2. spring本身的限制
spring2.0开始引入的schema与namespace大大简化了XML Bean的定义,比如<tx:annotation-driven />,简单一行就开启了用annotation来配置事务的功能(还记得spring1.x的时候需要多少行来配置事务吗?)。换做用 @Configuration要如何实现?这个时候只能深入spring的细节,找出<tx:annotation-driven />注册的所有bean,一个一个地在AppConfig.java中手工定义。我之前想过写一个插件来解决这个问题,即通过代码定义一个简单的bean就可以实现namespace这样的功能。后来在spring的jira上发现了spring3.1即将提供这样的支持,在基于java的配置中增加以下高级配置的功能:
* Enabling annotation-driven transaction management (<tx:annotation-driven/>)
* Enabling annotation-driven scheduling (<task:annotation-driven/>)
* Enabling AspectJ auto-proxying (<aop:aspectj-autoproxy)
* Enabling domain object DI with @Configurable (<aop:spring-configured/>)
* Enabling property-placeholder replacement (<context:property-placeholder/>)
* Enabling AspectJ load-time weaving (<context:load-time-weaver/>)
* Enabling MBean Export (<context:mbean-export/>)
* Enabling component scanning (<context:component-scan/>)
* Performing JNDI lookups (<jee:jndi-lookup/>)
* Looking up local and remote stateless session beans (<jee:local-slsb/>; <jee:remote-slsb/>)
所以这个问题在未来的版本中也会得到解决
总结:所以我觉得java-based configuration会是一个趋势。说来惭愧,像python, ruby等语言不早就这么做了吗?看看django, rails,里面的配置不都是用自己的语言来写吗?大家都玩得这么High,java怎么能缺席呢?
从回帖的反应来看,大多数人还是不赞成完全代替XML的,这点倒是在意料之中。我个人还是倾向于用代码来取代XML的Bean定义,当然这更多的是关乎个人偏好,不代表与我观点不同的人就是错的。
先来说说代码相对于XML的优点吧:
1. 更加简洁,相对于XML的“语法”,java来得更熟悉
2. 类型安全,更大程度上发挥java静态语言的特性
3. 对重构更加友好
再说说用annotation代替XML的可能性吧,目前看来是不大可能,主要还存在以下的限制:
1. java的语言文化
不知道还有哪门语言比java更加依赖XML,尤其是做web开发。在JDK5之前,没有annotation的时代,用XML来记录一些补充语义,似乎也没有比这更理想的方案。这些年用着用着大家就习惯了,于是不再有人去质疑。回头看看平时使用的各种大大小小的框架,除了Bob Lee开发的google guice,没有哪个从最初的设计开始就抛开XML的,在java主流文化的影响下拿出这么“非主流”的作品,难怪他自称crazybob。好在这些情况在慢慢好转,annotation以及CoC等观念被越来越多的人接受。
2. spring本身的限制
spring2.0开始引入的schema与namespace大大简化了XML Bean的定义,比如<tx:annotation-driven />,简单一行就开启了用annotation来配置事务的功能(还记得spring1.x的时候需要多少行来配置事务吗?)。换做用 @Configuration要如何实现?这个时候只能深入spring的细节,找出<tx:annotation-driven />注册的所有bean,一个一个地在AppConfig.java中手工定义。我之前想过写一个插件来解决这个问题,即通过代码定义一个简单的bean就可以实现namespace这样的功能。后来在spring的jira上发现了spring3.1即将提供这样的支持,在基于java的配置中增加以下高级配置的功能:
* Enabling annotation-driven transaction management (<tx:annotation-driven/>)
* Enabling annotation-driven scheduling (<task:annotation-driven/>)
* Enabling AspectJ auto-proxying (<aop:aspectj-autoproxy)
* Enabling domain object DI with @Configurable (<aop:spring-configured/>)
* Enabling property-placeholder replacement (<context:property-placeholder/>)
* Enabling AspectJ load-time weaving (<context:load-time-weaver/>)
* Enabling MBean Export (<context:mbean-export/>)
* Enabling component scanning (<context:component-scan/>)
* Performing JNDI lookups (<jee:jndi-lookup/>)
* Looking up local and remote stateless session beans (<jee:local-slsb/>; <jee:remote-slsb/>)
所以这个问题在未来的版本中也会得到解决
总结:所以我觉得java-based configuration会是一个趋势。说来惭愧,像python, ruby等语言不早就这么做了吗?看看django, rails,里面的配置不都是用自己的语言来写吗?大家都玩得这么High,java怎么能缺席呢?
评论
zzy9zzy 写道
properties和xml不是一个意思嘛,都是配置文件。对了,你的项目是不是不用Spring啊,我记得以前不用Spring做项目的时候,确实是把数据库配置放在properties里面的,那你的做法我还是赞同的。
我接触到的项目,不管用什么框架,数据库连接等配置都是放在properties里面的
septem 写道
zzy9zzy 写道
其实你的数据源这样做,还是要读取xml配置文件
不大明白你的意思。。。像driverClassName之类的数据库连接配置是放在properties文件里的,通过spring el注入到代码中,本来就没有xml,何来还是要读取xml之说?
对于这种外部环境的配置,都放在properties文件中,也可以避免因修改配置而走测试流程。但我还是觉得需要不需要测试不能简单地根据是修改代码还是修改xml来判断。如果你用xml来描述bean之间的依赖关系,修改xml就代表bean之间的依赖关系变了,对于这些影响比较大的变动,不也应该仔细地测试一下吗?
而且很多时候修改xml是由代码改动引起的,比如某个类被重命名了。。。
properties和xml不是一个意思嘛,都是配置文件。对了,你的项目是不是不用Spring啊,我记得以前不用Spring做项目的时候,确实是把数据库配置放在properties里面的,那你的做法我还是赞同的。
xml配置还是很必要的,可以集中很多信息,很方便的,annotation比较分散
除非用annotation比xml性能有很大提升,否则即使有个三方的工具之类的东西可以提取出所有anntoation 也还是没有xml来的方便快捷。
除非用annotation比xml性能有很大提升,否则即使有个三方的工具之类的东西可以提取出所有anntoation 也还是没有xml来的方便快捷。
septem 写道
slaser 写道
个人觉得java可读性比xml差。如上面的用java配置数据源,我觉得很SB.因为我开发中确实经常改数据源的。而且我觉得数据源就该是配置,和代码有毛关系。哪个简单,直接比行数就可以了。
还是第一次听说xml的可读性比java好。。。个人的习惯是很难改变的,用你觉得舒服的方式就好,没必要纠结于这些细节。。。
是不是很多人都没看明白帖子啊,数据源的配置是放在properties里面的,即使改也是改properties,这点跟你用代码还是xml无关。。。
行数是会比xml多几行,不过也仅仅是多几行而已,差别不大,相对来说,写代码总比写xml舒服一些吧。。。
你觉得写java舒服估计是有API提示的原因。
对于数据源这种相对固定的配置,没几个人记不住。
IOC关系定义这块确实有争议。说说我所遇到的工作环境,经常有项目被转移给别人做,对于有经验的人,要明白代码,首先看applicationContext.xml. 这个比看annotation快多了。
slaser 写道
个人觉得java可读性比xml差。如上面的用java配置数据源,我觉得很SB.因为我开发中确实经常改数据源的。而且我觉得数据源就该是配置,和代码有毛关系。哪个简单,直接比行数就可以了。
还是第一次听说xml的可读性比java好。。。个人的习惯是很难改变的,用你觉得舒服的方式就好,没必要纠结于这些细节。。。
是不是很多人都没看明白帖子啊,数据源的配置是放在properties里面的,即使改也是改properties,这点跟你用代码还是xml无关。。。
行数是会比xml多几行,不过也仅仅是多几行而已,差别不大,相对来说,写代码总比写xml舒服一些吧。。。
个人觉得java可读性比xml差。如上面的用java配置数据源,我觉得很SB.因为我开发中确实经常改数据源的。而且我觉得数据源就该是配置,和代码有毛关系。哪个简单,直接比行数就可以了。
zzy9zzy 写道
其实你的数据源这样做,还是要读取xml配置文件
不大明白你的意思。。。像driverClassName之类的数据库连接配置是放在properties文件里的,通过spring el注入到代码中,本来就没有xml,何来还是要读取xml之说?
对于这种外部环境的配置,都放在properties文件中,也可以避免因修改配置而走测试流程。但我还是觉得需要不需要测试不能简单地根据是修改代码还是修改xml来判断。如果你用xml来描述bean之间的依赖关系,修改xml就代表bean之间的依赖关系变了,对于这些影响比较大的变动,不也应该仔细地测试一下吗?
而且很多时候修改xml是由代码改动引起的,比如某个类被重命名了。。。
septem 写道
zzy9zzy 写道
用annotation最大的问题是如果修改配置就要改代码,改了代码就要测试,这是不太可以接受的。用xml配置文件目的就是代码和配置分离,修改配置的时候不需要改代码走测试流程。
非常建议使用xml配置spring框架,至于action和dao层我倒是支持用annotation,改起来直观方便——尤其是hibernate的对象映射
非常建议使用xml配置spring框架,至于action和dao层我倒是支持用annotation,改起来直观方便——尤其是hibernate的对象映射
注解不并妨碍代码和配置分离,比如:
@Configuration public class AppConfig { @Value("#{datasource.url}") private String databaseUrl; @Value("#{datasource.driver}") private String driverName; @Value("#{datasource.username}") private String username; @Value("#{datasource.password}") private String password; @Bean(destroyMethod = "close") public BasicDataSource dataSource(){ BasicDataSource dataSource = new BasicDataSource(); dataSource.setUrl(databaseUrl); dataSource.setDriverClassName(driverName); dataSource.setUsername(username); dataSource.setPassword(password); return dataSource; } }
像数据库连接等所有依赖外部环境的配置都可以放到properties里面,再通过spring el注入到代码中来
Spring的数据源配置还是不建议这样做。数据源这种不容易的变得东西是可以用annotation的,但变化主要在于大量Action,Bs,Dao,用annotation就要改代码。其实你的数据源这样做,还是要读取xml配置文件,不划算的。一般我们像下面这样在xml里面做配置就可以包括连接池和数据源一次性解决。
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" /> <property name="username" value="name" /> <property name="password" value="111111" /> </bean>
15 楼 songfantasy 2010-09-04 引用
鱼言风语 写道
俺觉着:
Spring用Annotation代替配置文件非常有必要
Ibatis用Annotation代替配置文件是倒退
如果配置信息本身是类/类的成员的特性,那么应该用Annotation;
如果配置信息依赖于外部环境,应该用配置文件
Spring用Annotation代替配置文件非常有必要
Ibatis用Annotation代替配置文件是倒退
如果配置信息本身是类/类的成员的特性,那么应该用Annotation;
如果配置信息依赖于外部环境,应该用配置文件
赞成,Spring的配置文件建议使用Annotation,ibatis的倒没有必要。放在xml中比放在代码中好。
<div class="quote_title">proTecJavaChen 写道</div>
<div class="quote_div">我是一个新手,个人理解,大型项目还是用XML比较好,因为那样一看XML文件就能明白各个BEAN之间的关系。如果都用注解方式,还得一个一个到Java类中看。维护起来比较麻烦。<br>这只是我个人理解,如果有说错的地方,希望指教。</div>
<p>这个倒不是问题,可以写个程序从Annotation提取出Spring的配置信息,再写到XML里,我还写过一个半成品的呢。<img src="/images/smiles/icon_wink.gif" alt=""></p>
<div class="quote_div">我是一个新手,个人理解,大型项目还是用XML比较好,因为那样一看XML文件就能明白各个BEAN之间的关系。如果都用注解方式,还得一个一个到Java类中看。维护起来比较麻烦。<br>这只是我个人理解,如果有说错的地方,希望指教。</div>
<p>这个倒不是问题,可以写个程序从Annotation提取出Spring的配置信息,再写到XML里,我还写过一个半成品的呢。<img src="/images/smiles/icon_wink.gif" alt=""></p>
zzy9zzy 写道
用annotation最大的问题是如果修改配置就要改代码,改了代码就要测试,这是不太可以接受的。用xml配置文件目的就是代码和配置分离,修改配置的时候不需要改代码走测试流程。
非常建议使用xml配置spring框架,至于action和dao层我倒是支持用annotation,改起来直观方便——尤其是hibernate的对象映射
非常建议使用xml配置spring框架,至于action和dao层我倒是支持用annotation,改起来直观方便——尤其是hibernate的对象映射
注解不并妨碍代码和配置分离,比如:
@Configuration public class AppConfig { @Value("#{datasource.url}") private String databaseUrl; @Value("#{datasource.driver}") private String driverName; @Value("#{datasource.username}") private String username; @Value("#{datasource.password}") private String password; @Bean(destroyMethod = "close") public BasicDataSource dataSource(){ BasicDataSource dataSource = new BasicDataSource(); dataSource.setUrl(databaseUrl); dataSource.setDriverClassName(driverName); dataSource.setUsername(username); dataSource.setPassword(password); return dataSource; } }
像数据库连接等所有依赖外部环境的配置都可以放到properties里面,再通过spring el注入到代码中来
用annotation最大的问题是如果修改配置就要改代码,改了代码就要测试,这是不太可以接受的。用xml配置文件目的就是代码和配置分离,修改配置的时候不需要改代码走测试流程。
非常建议使用xml配置spring框架,至于action和dao层我倒是支持用annotation,改起来直观方便——尤其是hibernate的对象映射
非常建议使用xml配置spring框架,至于action和dao层我倒是支持用annotation,改起来直观方便——尤其是hibernate的对象映射
proTecJavaChen 写道
我是一个新手,个人理解,大型项目还是用XML比较好,因为那样一看XML文件就能明白各个BEAN之间的关系。如果都用注解方式,还得一个一个到Java类中看。维护起来比较麻烦。
这只是我个人理解,如果有说错的地方,希望指教。
这只是我个人理解,如果有说错的地方,希望指教。
这点是事实。注解会将语义信息分散到各个class中去,XML则是集中管理。
但是借助SpringSource Tool Suite或者其它IDE工具来管理这些分散的配置,算不算是一种弥补方案呢,呵呵
wwy_0918 写道
鱼言风语 写道
俺觉着:
Spring用Annotation代替配置文件非常有必要
Ibatis用Annotation代替配置文件是倒退
如果配置信息本身是类/类的成员的特性,那么应该用Annotation;
如果配置信息依赖于外部环境,应该用配置文件
Spring用Annotation代替配置文件非常有必要
Ibatis用Annotation代替配置文件是倒退
如果配置信息本身是类/类的成员的特性,那么应该用Annotation;
如果配置信息依赖于外部环境,应该用配置文件
支持,方便理解代码。
Annotation的用途可不是为了方便理解代码,有了Annotation,你自己就可以很容易的做你自己的AOP了。
鱼言风语 写道
俺觉着:
Spring用Annotation代替配置文件非常有必要
Ibatis用Annotation代替配置文件是倒退
如果配置信息本身是类/类的成员的特性,那么应该用Annotation;
如果配置信息依赖于外部环境,应该用配置文件
Spring用Annotation代替配置文件非常有必要
Ibatis用Annotation代替配置文件是倒退
如果配置信息本身是类/类的成员的特性,那么应该用Annotation;
如果配置信息依赖于外部环境,应该用配置文件
支持,方便理解代码。
7 楼 proTecJavaChen 2010-09-03 引用
我是一个新手,个人理解,大型项目还是用XML比较好,因为那样一看XML文件就能明白各个BEAN之间的关系。如果都用注解方式,还得一个一个到Java类中看。维护起来比较麻烦。
这只是我个人理解,如果有说错的地方,希望指教。
这只是我个人理解,如果有说错的地方,希望指教。
鱼言风语 写道
俺觉着:
Spring用Annotation代替配置文件非常有必要
Ibatis用Annotation代替配置文件是倒退
如果配置信息本身是类/类的成员的特性,那么应该用Annotation;
如果配置信息依赖于外部环境,应该用配置文件
Spring用Annotation代替配置文件非常有必要
Ibatis用Annotation代替配置文件是倒退
如果配置信息本身是类/类的成员的特性,那么应该用Annotation;
如果配置信息依赖于外部环境,应该用配置文件
赞同,Spring新版大力推Annotation也是基于此,很多必然且几乎不会改变的依赖没必要放到配置文件。
尝试过给Ibatis加Annotation,如果把Dao(或者3.0的Mapper)跟sqlmap一一对应的话把sql注入到类里还有点价值,其他配置,留给xml吧
鱼言风语 写道
俺觉着:
Spring用Annotation代替配置文件非常有必要
Ibatis用Annotation代替配置文件是倒退
如果配置信息本身是类/类的成员的特性,那么应该用Annotation;
如果配置信息依赖于外部环境,应该用配置文件
Spring用Annotation代替配置文件非常有必要
Ibatis用Annotation代替配置文件是倒退
如果配置信息本身是类/类的成员的特性,那么应该用Annotation;
如果配置信息依赖于外部环境,应该用配置文件
揣摩着有点道理
发表评论
-
spring boot整合mybatis+mybatis-plus
2019-02-08 23:58 0https://www.cnblogs.com/lia ... -
Spring点滴 Spring实战系列
2018-11-14 18:06 0https://www.cnblogs.com/si ... -
易百教程
2017-06-07 14:00 0http://www.yiibai.com/lua/l ... -
关于Spring Data redis几种对象序列化的比较
2016-09-06 15:01 0问题 最近在整一个spring data r ... -
spring 结合 Redis 例子,简单入门例子
2016-09-05 10:51 0http://oyhk.iteye.com/blog/ ... -
spring与redis集成之aop整合方案
2016-09-05 10:20 0http://blog.csdn.net/zhann ... -
Dubbo搭建例子
2016-09-03 17:35 0http://blog.csdn.net/lzxads ... -
集群部署服务和消费者测试(1)
2016-09-03 17:10 0修改dp和dc程序为注册到集群zookeeper中 ... -
zookeeper 服务器安装 单例和集群
2016-09-03 17:02 0http://blog.csdn.net/fangxi ... -
dubbo起步搭建Spring+SpringMVC+dubbo的开发环境
2016-09-03 16:49 0http://blog.csdn.net/fangxi ... -
Memcached与Spring AOP构建数分布式据库前端缓存框架
2016-09-02 22:19 0由于上一篇有介绍了Memcached缓存,并集群部 ... -
Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
2016-09-02 22:11 0原文链接:http://blog.csdn.net/cong ... -
重要,Spring注解事务无效 和 Cannot add foreign key constraint
2016-02-20 02:18 0Cannot add foreign key con ... -
Spring2.5.6中定时器Quarz的使用
2015-10-08 10:07 685下面说明详细的配置: applicationContext ... -
spring ioc原理(看完后大家可以自己写一个spring)
2015-08-07 14:43 0http://blog.csdn.net/it_ma ... -
Spring技术内幕——深入解析Spring架构与设计原理(二)AOP
2015-08-04 19:32 0http://jiwenke.iteye.com/ ... -
spring源码分析之——spring aop原理
2015-08-04 19:18 0aop是spring中非常有趣的一个功能。如果应用得当会大有 ... -
自我分析-Spring AOP
2015-08-04 19:13 0aop是spring中非常有趣的一个功能。如果应用得当会大有 ... -
利用AbstractRoutingDataSource实现动态数据源切换
2015-07-15 14:44 0利用AbstractRoutingDataSource实现 ... -
spring 使用AbstractRoutingDataSource自定义动态数据源时的事务处理
2015-07-15 14:38 0spring 使用AbstractRoutingDataSo ...
相关推荐
### 详解Spring 3.0基于Annotation的依赖注入实现 #### 概述 Spring框架作为一个广泛使用的Java开发框架,提供了强大的依赖注入(Dependency Injection, DI)能力,帮助开发者轻松管理和组织复杂的Java应用。随着...
在Spring 3.0中,批注(Annotation)被更广泛地用于配置,替代了XML配置文件。例如,`@Autowired`用于自动装配依赖,`@Service`、`@Repository`和`@Controller`用于组件的标记,`@Transactional`用于标记事务边界。...
Spring还支持基于XML的配置,但使用注解能减少配置文件的复杂性,提高代码的可读性。 在实际项目中,为了实现权限管理,你需要创建用户、角色和权限的实体类,并定义它们之间的关系。在数据库层面,这通常涉及到三...
在本文中,我们将深入探讨Spring 3.0框架的配置示例,特别是关于文件上传和AJAX(异步JavaScript及XML)的注解使用。Spring框架是Java领域中广泛使用的轻量级应用框架,它提供了丰富的功能来简化企业级开发。在...
3. **注解驱动的开发(Annotation-based Development)**:Spring 3.0大力推广注解,如@Service、@Repository、@Controller等,使得XML配置文件大大减少,提高了开发效率。 4. **JSR-303/JSR-349 Bean Validation**...
Spring 3.0版本引入了对定时任务的支持,这是一个非常实用的功能,可以帮助开发者实现定期执行的任务,如数据同步、报表生成等。本文将深入探讨Spring 3.0中的定时任务实现,并结合Quartz库来进一步扩展定时任务的...
3. **配置Spring3.0**:在applicationContext.xml中声明Bean,包括Service层、DAO层的实例,以及Hibernate的相关配置。通过@Autowired注解实现依赖注入。 4. **整合Struts和Spring**:使用Spring的Struts插件,使...
4. **配置AOP**:在Spring 3.0中,可以使用XML配置或者注解方式来声明AOP。XML配置通过`<aop:config>`和`<aop:advisor>`等元素定义切入点和通知。注解方式则更加简洁,如`@Aspect`定义切面,`@Pointcut`定义切入点,...
这种方法只需要在 Spring 配置文件中定义一个事务管理对象(如 DataSourceTransactionManager),然后加入 `<tx:annotation-driven/>` 节点,引用该事务管理对象,然后即可在需要进行事务处理的类和方法使用 `@...
2. **注解驱动开发(Annotation-based Development)**:在Spring 3.0中,注解成为主流的编程模式,如@Controller、@Service、@Repository和@Transactional等,减少了XML配置,提高了代码的可读性和可维护性。...
总之,这个压缩包中的Spring 3.0 XSD文件是理解和使用Spring框架的关键资源。它们详细地定义了XML配置文件的语法,使得开发者可以更精确地控制Spring容器的行为,实现灵活的依赖注入、AOP、事务管理、数据库和消息...
注解(Annotation)是Spring 3.0中的一个重要特性,它提供了一种元数据的方式,允许开发者在代码中嵌入信息,这些信息可以被编译器或运行时环境用来处理代码。Spring 3.0引入了如@Component、@Service、@Repository...
2. **注解驱动开发(Annotation-based Development)**:Spring 3.0引入了大量的注解,如@Service、@Controller、@Repository和@Transactional,减少了XML配置,提高了代码可读性。例如,@Autowired用于自动装配依赖,...
Spring 3.0 XSD 文件是Spring框架在3.0版本中使用的XML Schema定义文件,它们主要用于配置Spring框架的应用上下文和服务。XSD文件的作用在于为XML配置提供结构化约束和验证,确保开发者遵循正确的格式编写配置。在...
5. **REST支持**:Spring 3.0增加了对RESTful服务的支持,`org.springframework.web.bind.annotation.RequestMapping`和`@ResponseBody`注解用于处理HTTP请求并返回JSON或XML响应。 6. **JSR-303/JSR-349 Bean ...
在Spring 3.0中,Spring MVC引入了强大的注解支持,使得开发Web应用程序变得更加简洁高效。本节将深入探讨Spring MVC注解及其在实际应用中的实现方式。 首先,Spring MVC注解允许开发者以声明式的方式配置控制器,...
2. **注解驱动开发 (Annotation-based Development)**:Spring 3.0引入了大量的注解,如`@Component`、`@Service`、`@Repository`和`@Controller`,用于简化配置,使代码更加简洁。此外,`@Autowired`和`@Qualifier`...
在本文中,我们将深入探讨如何使用Spring 3.0 MVC框架通过注解方式实现一个简单的“Hello, World!”输出。Spring MVC是Spring框架的一部分,它为构建基于模型-视图-控制器(MVC)架构的Web应用程序提供了一个强大的...