首页 > 代码库 > 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就可以完成注入。
对于这里的变量名可以任意。