Spring 注解驱动开发
1. 配置文件
1、配置文件的形式中,标注了@component-scan
,@Controller
,@Service
,@Repository
,@Component
就会自动扫描包。
2、@ComponentScan(value="com.atguigu")
,
1.1 配置
2. 常用注解
@Controller
注解的bean会被spring-mvc框架所使用。@Repository
会被作为持久层操作(数据库)的bean来使用
如果想使用自定义的组件注解,那么只要在你定义的新注解中加上@Component即可:
@Component
@Scope("prototype")
public @interface ScheduleJob {...}123
这样,所有被@ScheduleJob
注解的类就都可以注入到spring容器来进行管理。我们所需要做的,就是写一些新的代码来处理这个自定义注解(译者注:可以用反射的方法),进而执行我们想要执行的工作。
@Component
就是跟<bean>
一样,可以托管到Spring容器进行管理。
@Service
, @Controller
, @Repository
= {@Component
+ 一些特定的功能}。这个就意味着这些注解在部分功能上是一样的。
当然,下面三个注解被用于为我们的应用进行分层:
@Controller
注解类进行前端请求的处理,转发,重定向。包括调用Service层的方法 (requestMapping + componnet)@Service
注解类处理业务逻辑@Repository
注解类作为DAO对象(数据访问对象,Data Access Objects),这些类可以直接对数据库进行操作
有这些分层操作的话,代码之间就实现了松耦合,代码之间的调用也清晰明朗,便于项目的管理;假想一下,如果只用@Controller
注解,那么所有的请求转发,业务处理,数据库操作代码都糅合在一个地方,那这样的代码该有多难拓展和维护。
总结
@Component
, @Service
, @Controller
, @Repository
是spring注解,注解后可以被spring框架所扫描并注入到spring容器来进行管理@Component
是通用注解,其他三个注解是这个注解的拓展,并且具有了特定的功能@Repository
注解在持久层中,具有将数据库操作抛出的原生异常翻译转化为spring的持久层异常的功能。@Controller
层是spring-mvc的注解,具有将请求进行转发,重定向的功能。@Service
层是业务逻辑层注解,这个注解只是标注该类处于业务逻辑层。
用这些注解对应用进行分层之后,就能将请求处理,义务逻辑处理,数据库操作处理分离出来,为代码解耦,也方便了以后项目的维护和开发。