- 浏览: 615592 次
- 性别:
- 来自: 厦门
文章分类
最新评论
-
咖啡舞者:
现在在厦门工作还好吧。
2013换工作记 -
huih1984:
工作8年,算起来楼主和我差不多岁数啊, ,本人现在干着没有合同 ...
2013换工作记 -
无心流泪wan:
乘法法则规定复数的乘法按照以下的法则进行:设z1=a+bi,z ...
帮朋友做的一笔试(友元 运算符重载) -
我叫营长1:
谢谢,很详细呢
SharedPreferences 的用法 -
javalinjx:
挺有意思的。哈哈
2013换工作记
转摘自:http://tonyaction.blog.51cto.com/227462/83874
写在前面:
好长时间没有写博客了,主要是最近一直忙于工作上面的事情没有研究什么新的东西,也没有什么写的,最近应一个朋友的邀请一起开发一套教材,我才有开始对Spring研究起来,今天把写的其中一部分贴出来与大家共享.如有不足之处请多多指教.
Spring2.5
注释驱动
8.4.1
Spring2.5
注释驱动
注释语法越来越多的被业界所使用
,
并且注释配置相对于
XML
配置具有很多的优势:它可以充分利用
Java
的反射机制获取类结构信息,这些信息可以有效减少配置的工作。注释和
Java
代码位于一个文件中,而
XML
配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果配置信息和
Java
代码放在一起,有助于增强程序的内聚性。而采用独立的
XML
配置文件,程序员在编写一个功能时,往往需要在程序文件和配置文件中不停切换,这种思维上的不连贯会降低开发效率。因此在很多情况下,注释配置比
XML
配置更受欢迎,注释配置有进一步流行的趋势。
Spring 2.5
的一大增强就是引入了很多注释类,现在您已经可以使用注释配置完成大部分
XML
配置的功能。
在使用注释配置之前,先来回顾一下传统上是如何配置
Bean
并完成
Bean
之间依赖关系的建立。
代码清单
1
Foo.java Foo
对象有一个
String
类型的
name
属性
.
package
com.tony.test;
public
class
Foo {
private
String
name
;
public
String toStirng(){
return
"Foo Name is :"
+
this
.
name
;
}
Set
和
get
方法
}
代码清单
2
Bar.java Bar
对象有一个
String
类型的
add
属性
.
package
com.tony.test;
public
class
Bar {
private
String
add
;
public
String toStirng(){
return
"Bar Add is :"
+
this
.
add
;
}
Set
和
get
方法
}
代码清单
3 Main.java Main
对象有两个属性分别是
Foo
和
Bar
package
com.tony.test;
public
class
Main {
private
Foo
foo
;
private
Bar
bar
;
public
String toString
(){
return
"Main : ["
+
this
.
foo
.toStirng() +
" "
+
this
.
bar
.toStirng() +
"]"
;
}
Set
和
get
方法
}
代码清单
4
配置文件
spring-config-beans.xml
<
bean
id
=
"main"
class
=
"com.tony.test.Main"
>
<
property
name
=
"foo"
ref
=
"foo"
></
property
>
<
property
name
=
"bar"
ref
=
"bar"
></
property
>
</
bean
>
<
bean
id
=
"foo"
class
=
"com.tony.test.Foo"
>
<
property
name
=
"name"
value
=
"Foo"
></
property
>
</
bean
>
<
bean
id
=
"bar"
class
=
"com.tony.test.Bar"
>
<
property
name
=
"add"
value
=
"Bar"
></
property
>
</
bean
>
代码清单
5 Test.java Test
类用于初始化
Spring
容器并获得
main
对象
package
com.tony.test;
import
org.springframework.context.ApplicationContext;
import
org.springframework.context.support.
ClassPathXmlApplicationContext
;
public
class
Test {
public
static
void
main(String[] args) {
String[] locations = {
"spring-config-beans.xml"
};
ApplicationContext ctx =
new
ClassPathXmlApplicationContext
(locations);
Main main = (Main) ctx.getBean(
"main"
);
System.
out
.println(main);
}
}
运行
Test
类控制台输出以下信息:
Main : [Foo Name is :Foo Bar Add is :Bar]
这说明
Spring
已经完成了
Bean
的创建和装配工作。
1)
使用
@Autowired
注释
Spring 2.5
引入了
@Autowired
注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。下面我们来看一下使用
@Autowired
进行成员变量自动注入的代码:
代码清单
6
使用
@Autowired
注释的
Main.java,
此时可以将
Main.java
类中的
set
和
get
方法删除
package
com.tony.test;
import
org.springframework.beans.factory.annotation.Autowired
;
public
class
Main {
@Autowired
private
Foo
foo
;
@Autowired
private
Bar
bar
;
public
String toString(){
return
"Main : ["
+
this
.
foo
.toStirng() +
" "
+
this
.
bar
.toStirng() +
"]"
;
}
}
Spring
通过一个
BeanPostProcessor
对
@Autowired
进行解析,所以要让
@Autowired
起作用必须事先在
Spring
容器中声明
AutowiredAnnotationBeanPostProcessor Bean
代码清单
7
修改配置文件
<!--
该
BeanPostProcessor
将自动对标注
@Autowired
的
Bean
进行注入
-->
<
bean
class
=
"org.springframework.beans.factory.annotation.
AutowiredAnnotationBeanPostProcessor"
/>
<!—
此时移除
main Bean
的属性注入信息
-->
<
bean
id
=
"main"
class
=
"com.tony.test.Main"
></
bean
>
<
bean
id
=
"foo"
class
=
"com.tony.test.Foo"
>
<
property
name
=
"name"
value
=
"Foo"
></
property
>
</
bean
>
<
bean
id
=
"bar"
class
=
"com.tony.test.Bar"
>
<
property
name
=
"add"
value
=
"Bar"
></
property
>
</
bean
>
当
Spring
容器启动时,
AutowiredAnnotationBeanPostProcessor
将扫描
Spring
容器中所有
Bean
,当发现
Bean
中拥有
@Autowired
注释时就找到和其匹配(默认按类型匹配)的
Bean
,并将其注入。
2)
使用
@Qualifier
注释
Spring
允许我们通过
@Qualifier
注释指定注入
Bean
的名称,这样就不会产生注入错误了,请看下面代码清单:
代码清单
8
修改
Main.java
类中的
foo
属性注释增加注释
@Qualifier
(
"foo1"
)
public
class
Main {
@Autowired
@Qualifier
(
"foo1"
)
private
Foo
foo
;
@Autowired
private
Bar
bar
;
public
String toString(){
return
"Main : ["
+
this
.
foo
.toStirng() +
" "
+
this
.
bar
.toStirng() +
"]"
;
}
}
代码清单
9
在配置文件中增加
id
为
foo2 Bean
定义
<
bean
class
=
"org.springframework.beans.factory.annotation.
AutowiredAnnotationBeanPostProcessor"
/>
<
bean
id
=
"main"
class
=
"com.tony.test.Main"
></
bean
>
<
bean
id
=
"foo1"
class
=
"com.tony.test.Foo"
>
<
property
name
=
"name"
value
=
"Foo1"
></
property
>
</
bean
>
<
bean
id
=
"foo2"
class
=
"com.tony.test.Foo"
>
<
property
name
=
"name"
value
=
"Foo2"
></
property
>
</
bean
>
<
bean
id
=
"bar"
class
=
"com.tony.test.Bar"
>
<
property
name
=
"add"
value
=
"Bar"
></
property
>
</
bean
>
运行
Test.java
控制台输出如下信息
:
Main : [Foo Name is :Foo1 Bar Add is :Bar]
-
java中使用存储过程出现"该语句没有返回结果集"
2012-02-14 15:32 1919在jsp中调用存储过程,本来用的是sqlserver200 ... -
智能校车---校车解决方案
2012-01-30 13:37 1442... -
一个澳大利亚大三学生的作业
2010-12-06 15:33 1527最近有一个澳大利亚的学生来公司做二个月的实生,听他说是这他们学 ... -
WebLogic部署数据源
2010-10-22 08:47 2097http://www.cstc.org.cn/tabid/88 ... -
javax.net.ssl.SSLHandshakeException
2010-07-28 11:09 14441在执行webservice的过程中,出现如下异常: ja ... -
j2me 在手机上,截屏你的程序
2010-07-12 15:16 1380收藏起来:http://www.iteye.com/topic ... -
LWUIT显示漂亮的loading界面的两种方法
2010-07-06 20:23 2783强烈推荐此blog作者的博客 原文出处:http:// ... -
轻量级用户界面工具包(LWUIT)简介
2010-06-02 16:10 1765原文出处:http://developer ... -
LWUIT的资源编辑与应用
2010-06-02 16:06 1730在LWUIT下载包中,有一个名为“Resource Edi ... -
LWUIT的布局与Style的使用
2010-06-02 16:04 1702一、LWUIT的布局 LWUIT一共有五个布局,分别是: ... -
关于WAP项目有话要说
2010-05-27 16:05 1807搞一了个月的 ... -
WAP相关资料
2010-05-07 08:48 1600在上次视频中,演示了安装 jdk 1.7 和 Nokia Mo ... -
linux安装svn 分享
2010-03-30 10:46 2121在linux下安装配置svn独立服务器 SVN技术网 www ... -
解决Mysql无法远程连接的问题
2010-03-29 14:18 3840解决Mysql 无法远程 ... -
svn eclipse插件突然失效怎么办?
2010-03-26 14:24 7118前段时间遇到了svn eclipse插件突然失效的问题,差 ... -
实战篇:设计自己的Annotation
2010-03-23 13:36 752Annotation在java的世界正铺天盖地展开,有空 ... -
tomcat:java.lang.outofmemoryerror permgen space
2010-03-04 15:55 1119这个问题是我的工程中 ... -
如struts中配有如下几个action,ManagerUserAction中有与之对应的方法 <action name="addUser" class="
2010-03-04 11:16 2968如struts中配有如下几个action,ManagerUse ... -
log4j:WARN Please initialize the log4j system properly 问题解决
2010-03-03 11:06 4354今天花了点时间搞定了个并不是很重要的问题 在tomcat ... -
iBatis入门例子
2010-03-02 15:58 1700iBatis 是一个 O/R Mapping ...
相关推荐
总的来说,"SSJ使用注释版"项目展示了如何利用Struts2、Spring2.5和JPA这三大框架,结合注解方式,构建一个现代Java Web应用。通过深入理解这些技术和注解的用法,开发者可以更高效地开发和维护复杂的业务系统。
Java代码生成工具是一种高效开发辅助软件,主要用于自动化生成基于Java技术栈的Web应用程序代码,尤其针对Struts2.1.8、Spring2.5和Hibernate3这三个经典框架的集成应用。这样的工具能够显著提高开发效率,减少手动...
Spring 源码注释中文版的提供,使得开发者能够更加深入地理解 Spring 的工作原理,无需经过复杂的编译过程,可以直接阅读源码注释来学习。 Spring 框架主要由以下几个关键模块组成: 1. **Core Container(核心...
struts2+spring2.5+hibernate3.2 + ...spring2.5 是用注释来注入 hibernate3.2 是用ejb3注解映射关系 hibernate3 +个属性可以自动生成表结构 freemarker 用摸版来表现视图,这个例子就是简单的用法没进行进一不的架设
### Spring MVC注释文档知识点详解 #### 概述 随着技术的发展与演进,软件开发领域不断出现新的设计理念和技术框架。Spring MVC作为Spring框架的重要组成部分之一,在Spring 2.5版本中引入了基于注解的配置方式,...
总的来说,Struts2+Spring2.5+Ibatis2.3架构是一个成熟且广泛应用的Java Web开发组合,它将MVC设计模式、依赖注入和数据库操作有效地融合在一起,为开发者提供了强大的工具集,便于构建复杂的企业级应用。...
在本文档中,我们将详细探讨如何构建一个基于注释配置的SSH2应用,避免传统的XML配置,提升开发效率。 首先,我们来了解SSH2框架的核心组成部分: 1. **Struts2**:作为MVC(模型-视图-控制器)框架,负责处理HTTP...
3. **spring-jms**:此模块为Java消息服务(JMS)提供支持,包括生产者、消费者以及与消息驱动bean的集成。如果你的项目中需要使用消息队列来解耦系统组件或实现异步处理,这个模块将大有裨益。 4. **spring-...
Struts2 是一个基于MVC(模型-视图-控制器)设计模式的Java Web框架,用于构建结构清晰且易于维护的Web应用程序。在登录系统中,Struts2可以处理HTTP请求,管理视图展示,以及协调模型和控制器的交互。登录表单通常...
- Spring MVC是基于Model-View-Controller(MVC)设计模式的Web应用框架,提供了一种组织和处理请求的机制。 - 它的核心组件包括DispatcherServlet、HandlerMapping、HandlerAdapter、ModelAndView和ViewResolver...
此外,Spring框架也引入了JSR-330定义的依赖注入注解,如`@Inject`,并与JSR-250的注解(如`@PostConstruct`、`@PreDestroy`)进行集成,使代码更加简洁。同时,Spring的`@Component`、`@Service`、`@Repository`和`...
5. **Spring MVC**:Spring的Web MVC模块用于构建Web应用程序。`DispatcherServlet`是入口点,它负责请求分发。`HandlerMapping`和`HandlerAdapter`分别负责映射请求到处理器和适配处理器执行。`ModelAndView`则用于...
在"spring 编译后源码(有注释)"这个压缩包中,你将获得 Spring 框架 5.0.2.RELEASE 版本的源代码,这些源码已经包含了中文注释,对于学习和理解 Spring 框架的工作原理极其有价值。 1. **IoC(Inversion of ...
Spring MVC是Spring框架的一部分,主要用于构建Web应用程序的模型-视图-控制器(MVC)架构。这个入门教程将涵盖XML配置和注解配置两种方式,帮助初学者理解如何在Spring MVC中搭建基本的"Hello, World!"应用。 首先...
**Spring 2.5 注释驱动的 IoC 功能详解** Spring 框架自 2.5 版本开始引入了对注解的强大支持,极大地简化了依赖注入(Dependency Injection,简称 DI)的配置过程。注解驱动的 IoC(Inverse of Control,控制反转...
本项目是一个基于Struts2、Spring2.5、Hibernate3.5的整合示例,其中还引入了c3p0作为数据库连接池,并使用了日志工具Log4j。这个项目的目的是帮助开发者理解如何在实际开发中快速、有效地整合这四个关键组件,从而...
在 Spring MVC 中, jsp 文件中尽量不要有 Java 代码, 只有 HTML 代码和"迭代(forEach)"与"判断(if)"两个jstl标签. jsp 文件只作为渲染(或称为视图 View)模板使用. 好了, 我们开始吧. 首先我们需要一个放在 WEB-INF...
《基于Spring、Spring MVC、MyBatis的Java客户关系管理系统详解》 在现代企业运营中,客户关系管理(CRM)系统扮演着至关重要的角色,它帮助企业有效地管理与客户的交互,提高销售效率,优化客户服务,从而增强企业...
Spring2.5版本引入了对Java Persistence API(JPA)的支持,增强了与Hibernate等ORM工具的集成,使得开发更加灵活。 6. **Red Hat Enterprise Linux**:Red Hat Enterprise Linux是一款广泛使用的商业Linux发行版,...