一、为什么要使用注解?
- 它可以充分利用 Java 的反射机制获取类结构信息,可以有效减少配置的工作。如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO 的属性名、类型等信息,如果关系表字段和 PO 属性名、类型都一致,您甚至无需编写任务属性映射信息——因为这些信息都可以通过 Java 反射机制获取。
- 注释和 Java 代码位于一个文件中,而 XML 配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果配置信息和 Java 代码放在一起,有助于增强程序的内聚性。而采用独立的 XML 配置文件,程序员在编写一个功能时,往往需要在程序文件和配置文件中不停切换,这种思维上的不连贯会降低开发效率。
- 因此在很多情况下,注解配置比 XML 配置更受欢迎,注解配置有进一步流行的趋势.............
二、如何使用注解?
spring
框架使用的是分层的注解
@Component :泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
@Repository :用于标注DAO类
@Service : 用于标注业务类
@Controller :用于标注控制器类
(1)在applicationContext.xml文件中配置如下:
<!-- (1)导入注解 命名空间
xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
-->
<!-- (2)导入DI的注解自动扫描机制
base-package:自动扫描所在的包下面文件及子文件;
-->
<context:component-scan base-package="com.hlx.annotation.mvc"></context:component-scan>
(2)DAO类
@Repository("studentDaoImpl") // @Repository用于标注数据访问组件,即DAO组件。
public class StudentDaoImpl implements StudentDao {}
(3)业务类
@Service //@Service用于标注业务层组件
public class StudentServiceImpl implements StudentService {
//底层数据
@Resource(name="studentDaoImpl")
private StudentDao studentDao;
}
(4)Action类
@Controller // @Controller用于标注控制层组件(如struts中的action)、
public class StudentAction {
//业务数据
@Resource(name="studentServiceImpl")
private StudentService studentService;
}
总之,为Spring框架的注解开发常用注解,总体感觉还是比较简单,最起码相对其它两个框架而言,主要是通过注解完成对象的管理,和对象之间的组合,即Spring的IoC功能。注解的开发还是能大大提高我们的开发效率的,但是还是那句话,它在一定程度上违背了OCP原则,所以大力推荐使用注解的开发的前提还是我们的需求比较固定,变动较小。