📜  Spring Boot – @Service 注解和@Repository 注解的区别(1)

📅  最后修改于: 2023-12-03 14:47:32.862000             🧑  作者: Mango

Spring Boot – @Service注解和@Repository注解的区别

在 Spring Boot 中,@Service 注解和 @Repository 注解是常见的两种注解。这两种注解是为了表示 Java 类的用途,但是它们之间有一些区别。

@Service注解

@Service 注解表明该类是服务层中的组件。它标识一个类为 Spring Bean,该组件通常是设计用来处理业务逻辑和数据处理的。在类级别使用 @Service 注解,Spring 将自动注册该组件到应用程序上下文中,并可以在其他 bean 中通过依赖注入使用。

@Service 注解通常和 @Autowired 注解一同使用,通过依赖注入完成业务逻辑的开发。举个例子:

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public User getUserById(Long id) {
        return userRepository.findById(id).orElse(null);
    }
}
@Repository注解

@Repository 注解表明该类是数据访问层的组件。它标识一个类为 Spring Bean,通常用于持久化数据访问操作。在类级别使用 @Repository 注解,Spring 将自动注册该组件到应用程序上下文中,并可以在其他 bean 中通过依赖注入使用。

@Repository 注解通常和 @Autowired 注解一同使用,通过依赖注入完成数据访问的开发。举个例子:

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}

在上面的例子中,我们可以看到 UserRepository 通过 @Repository 注解被 Spring Boot 注册为一个 Bean。

区别和联系

@Service 和 @Repository 都是用来标记 Java 类的注解,但是它们被用于不同的场景。

@Service 注解一般用来标记业务逻辑的实现类,这些类通常包含了多重操作。例如:调用其他类来查询数据库或者调用响应的方法来验证用户的身份。

@Repository 注解则一般用于进行数据访问层的开发,通过它可以说明该组件是数据访问层的组件,负责持久化数据等工作。

@Service 和 @Repository 都是 Spring 组件开发中使用比较多的注解,用法简单方便,但是在使用的时候需要注意应用的场景。当然我们也可以直接使用 @Component 注解来定义自己的 Bean。

最后,需要注意的是,@Service 和 @Repository 注解都是由 @Component 注解衍生而来,它们都是带有特定语义的特殊化版本。因此,它们都拥有 @Autowired 注解的能力。