@Configuration, @Controller, @Service, @Repository 区别?
在Spring框架中,@Configuration
, @Controller
, @Service
, @Repository
都是特殊类型的@Component注解,它们用于不同的上下文,并附加了一些额外的行为:
@Configuration
: 用在类上,表示该类是一个配置类,里面可能有0个或多个被@Bean注解的方法。这些方法返回一个实例,该实例会被Spring容器管理。@Controller
: 主要用在web层,即控制器层。标记了@Controller的类将被视为请求处理类,可以使用@RequestMapping等相关注解进行URI映射及请求处理。@Service
: 主要用在业务逻辑层。这个注解没有添加任何额外的行为,但通过使用它,你可以明确地定义业务层的组件。在实践中,通常在此层中进行事务控制。@Repository
: 主要用在数据访问层,即DAO层。除了将类标识为Bean之外,它还能将数据库操作抛出的原生异常转化为Spring's DataAccessException。
总的来说,这四种注解都是将类注册到Spring容器中,只是它们的用途和所在的应用层次不同。另外,它们也为Spring AOP(Aspect Oriented Programming)提供有意义的切点。