首页 > 代码库 > Spring注解的整理

Spring注解的整理

注解是基于Spring的。

所谓的是基于Spring而言的,所以对注解的配置是在spring的配置文件中的,一般放在主配置文件中。

Spring配置中常用的命名空间,一般的Spring配置都能满足需求:

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

涉及到注解的部分是:

xmlns:context="http://www.springframework.org/schema/context"

之所以会用到这个因为在使用注解功能时有一个自动扫描beans和注解功能注册的配置。

如下:

<context:component-scan base-package="com.rlcc"/>

在加载Spring配置文件时会自动扫描这些包中的bean.

Action Dao  Service 注解配置详细如下:

Action:基本配置:

                    @Controller 

                  public class ExampleAction

如果action需要有范围:

@Controller 

@Scope("prototype")

public class ExampleAction

                  

使用@Controller表示控制层组件

对应范围解释如下:

   默认情况下,从bean工厂所取得的实例为Singleton(bean的singleton属性) Singleton: Spring容器只存在一个共享的bean实例,

默认的配置。 Prototype: 每次对bean的请求都会创建一个新的bean实例。二者选择的原则:有状态的bean都使用Prototype作用域

,而对无状态的bean则应该使用singleton作用域。

在 Spring2.0中除了以前的Singleton和Prototype外又加入了三个新的web作用域,分别为request、session和 global session。如

果你希望容器里的某个bean拥有其中某种新的web作用域,除了在bean级上配置相应的scope属性,还必须在容器级做一个额外的初始

化配置。即在web应用的web.xml中增加这么一个ContextListener:

org.springframework.web.context.request.RequestContextListener 以上是针对Servlet 2.4以后的版本。

Service基本配置:

         @Service("exampleService")

        public class ExampleServiceImpl    

@Service表示业务层组件

其中括号中的名字是自定义的名字(推荐使用这种方法,不容易乱,默认是getBean)

Dao 基本配置:

@Repository

public class SubDAO

 

这里的@Repository表示的是数据访问组件,Dao层往往会涉及到事务问题这就如下配置(不推荐使用):

@Repository @Transactional 

public class BaseDaoImpl 

         

在实际开发中一般从统一性和规范性考虑,使用AOP对事务进行处理,对@Transactional的用法不再赘述。

 

好,现在可以用注解标识出各组件了,那么各组件之间的关系又怎样用注解方式来表达呢?

具体如下:

Action中注入业务组件Service:

@Resource

private ExampleService exampleService; 

Service注入数据访问组件Dao:

@Resource

private BaseDao dao;

可以看到只需使用@Resource就可以完成注入。

对于这里的变量名可以任意。