我正在处理Sping Boot 项目。我的项目中有存储库文件,但它会在存储库类Unnecessary @Repository
中显示警告消息。我正在使用我的存储库扩展JpaRepository<>
。我的Spring版本是4,JDK版本是17。
以下是我的依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
这是我的存储库
@Repository // Here I get a warning to remove this annotation becasue its unnecessary
public interface CollegeRepo extends JpaRepository<College, Integer>{
}
3条答案
按热度按时间fv2wmkja1#
您正在扩展
JpaRepository<T, ID>
接口,这意味着spring Boot 必须为您自动配置这个仓库bean,即它将被配置为SimpleJpaRepository<T, ID>
的代理bean。简而言之,我们不仅仅使用
@Repository
或@Component
注解创建bean,我们还扩展了spring-data
接口,然后将自动配置存储库bean。csbfibhn2#
何时使用
@Repository
你想提供你自己的实现,如何访问数据层以及应该做什么。在这种情况下,用
@Repository
标记你的实现类将允许你用spring管理这个类,这样你就可以自动连接必要的字段来访问数据层,比如EntityManager
,JdbcTemplate
...等等。和@Repository
在最基本的水平,只是注册springbeans有一些轻微的增强使用@Repository
,这可能使它有必要使用,也是最佳做法,在目前的情况下。按照doc1
当与PersistenceExceptionTranslationPostProcessor结合使用时,用
@Repository
这样注解的类有资格进行Spring DataAccessException转换。,和doc2
持久性异常转换后处理器
Bean后处理器,它自动将持久性异常转换应用于任何用Spring的@Repository注解标记的Bean,并将相应的PersistenceExceptionTranslationAdvisor添加到公开的代理
上述案例使用
@Repository
的示例。然后,您可以在其他组件中自动连接
CustomCarRepository
,并按照您的实现访问数据层。何时不使用
@Repository
当你只声明你的接口,并从
Repository
的任何Spring子接口扩展到org.springframework.data.repository
时。示例
在这种情况下,
Spring Boot
将能够从auto configuration
自动为您创建存储库bean。唯一需要的进一步操作是,如果您自己的从
Repository
扩展的接口不存在于@Configuration
或@SpringBootApplication
所在的同一个包或子包中,则您需要@EnableJpaRepositories(basePackages = {"base-package-where-repositories-exist"})
@AutoConfigurationPackage(basePackages = {"base-package-where-repositories-exist"})
为了帮助spring Boot 识别软件包,它应该查找该存储库的自动配置。(稍后的
@AutoConfigurationPackage
将影响存储库和自动配置所需的其他内容,如实体扫描等。因此,在项目中应小心使用它,而不仅仅是存储库。)flseospp3#
解决方案取决于您要使用的数据库类型。“配置数据源失败:未指定“url”属性,并且无法配置嵌入式数据源。”出现错误是因为您尚未在www.example.com中设置数据库的URLapplication.properties。要解决此问题,建议您打开application.properties并根据您的系统添加以下内容: