Java春季工作中的注释 @repository



我有这样的代码:

存储库

@Repository
public interface EquipmentRepository extends JpaRepository<Equipment, Integer>{
Equipment findById(int id);
}

服务

@Service
public class EquipmentServiceImpl implements EquipmentService {
@Autowired
EquipmentRepository equipmentRepository;
@Override
public Equipment findById(int id) {
    return equipmentRepository.findById(id);
   }
}

我想知道为什么我可以称呼" Interface Equipment Repository"的方法。设备重新设备是接口,对吗?

Spring存储库负责将DAO的导入到DI容器中,并且还将未检查的例外引入Spring DataAccessException。弹簧存储库注释是用@Component注释元注释的,以便将存储库类用于组件扫描。

实施传统Java EE模式的团队,例如"数据访问 对象"也可以将这种刻板印象应用于DAO课程,尽管护理 应该采取以了解数据访问之间的区别 在此之前,对象和DDD风格的存储库。该注释是 通用的刻板印象和个人团队可能会缩小他们的范围 语义和适当的使用。

这样注释的课程符合春季DataAccessException的资格 与A结合使用时翻译 PersistenceExceptionTranslationPostProcessor。带注释的类是 还阐明了其在整体应用架构中的作用 出于工具,方面等的目的

来源:Javadoc

但是,在您的情况下,您还将扩展Spring Data JPA的JpaRepository。春季数据会自动提供常见的CRUD操作的实现。JpaRepository扩展了接口CrudRepository,该接口具有所有基本CRUD操作的方法。

public interface EquipmentRepository extends JpaRepository<Account, Long> { … }

定义此接口有两个目的:

  • 首先,通过扩展JpaRepository,我们得到了一堆通用的CRUD进入我们类型的方法,可以节省设备,删除它们并等等。
  • 第二,这将允许弹簧数据JPA存储库基础结构扫描该接口的类路径并为它。

@EnableJpaRepositories扫描com.acme.repositories以下的所有软件包,以扩展JpaRepository的接口,并为其创建一个由SimpleJpaRepository实现的弹簧bean(Spring Data提供了通过此类的CRUD存储库的默认信息(。

这就是为什么即使您尚未定义方法,也可以通过此设置进行CRUD操作。

相关内容

  • 没有找到相关文章

最新更新