Spring Boot @Repository 教程显示了如何在 Spring 应用中使用@Repository
注解。
Spring 是流行的 Java 应用框架,而 Spring Boot 是 Spring 的演进,可以帮助轻松地创建独立的,生产级的基于 Spring 的应用。
@Repository
@Repository
是 Spring 注解,指示装饰的类是存储库。 存储库是一种用于封装存储,检索和搜索行为的机制,该机制模仿对象的集合。 它是@Component
注解的一种特殊功能,允许通过类路径扫描自动检测实现类。
@ComponentScan
确保找到用@Component
和其派生词包括@Repository
装饰的类并将其注册为 Spring Bean。 @ComponentScan
自动包含在@SpringBootApplication
中。
Spring Boot @Repository
示例
以下应用演示了@Repository
的用法。 它向用户显示 HTML 表中的国家/地区列表。 在本应用中,我们使用 Spring Boot 版本 2.1.0。
这是项目结构。
pom.xml
这是 Maven 构建文件。 h2
依赖项包括 H2 数据库驱动程序。
Spring Boot 启动器是一组方便的依赖项描述符,可以极大地简化 Maven 配置。 spring-boot-starter-parent
具有 Spring Boot 应用的一些常用配置。 spring-boot-devtools
包含一些 Spring Boot 开发人员工具。 spring-boot-starter-web
支持经典和 RESTFul Web 应用。 spring-boot-starter-web-freemarker
是使用 Freemarker 模板引擎构建 Web 应用的入门工具。 它使用 Tomcat 作为默认的嵌入式容器。 spring-boot-starter-data-jpa
是将 Spring Data JPA 与 Hibernate 结合使用的入门工具。
spring-boot-maven-plugin
在 Maven 中提供了 Spring Boot 支持,使我们可以打包可执行的 JAR 或 WAR 档案。 它的spring-boot:run
目标运行 Spring Boot 应用。
resources/application.yml
在application.yml
文件中,我们编写了 Spring Boot 应用的各种配置设置。 port
设置服务器端口和context-path
上下文路径(应用名称)。 完成这些设置后,我们可以通过localhost:8086/SpringBootRepository/
访问该应用。 使用banner-mode
属性,我们可以关闭 Spring 标语。
JPA database
值指定要操作的目标数据库。 在本例中,我们指定了 Hibernate 方言org.hibernate.dialect.H2Dialect
。 ddl-auto
是数据定义语言模式; create-drop
选项将自动创建和删除数据库模式。
H2 数据库在内存中运行。 另外,我们将 spring 框架的日志记录级别设置为 ERROR。 在application.yml
文件位于中src/main/resources
目录。
resources/import.sql
模式是由 Hibernate 自动创建的。 之后,将执行import.sql
文件以将数据填充到表中。
com/zetcode/model/Country.java
这是Country
实体。 每个实体必须至少定义两个注解:@Entity
和@Id
。 以前,我们将ddl-auto
选项设置为create-drop
,这意味着 Hibernate 将根据该实体创建表模式。
@Entity
注解指定该类是一个实体,并映射到数据库表。 @Table
注解指定要用于映射的数据库表的名称。
@Id
注解指定实体的主键,@GeneratedValue
给出主键值的生成策略。
com/zetcode/repository/CountryRepository.java
CountryRepository
用@Repository
注解修饰。
通过从 Spring CrudRepository
扩展,我们为数据库实现了一些方法,包括findAll()
。 这样可以节省一些样板代码。
com/zetcode/service/ICountryService.java
ICountryService
包含findAll()
合同方法。
com/zetcode/service/CountryService.java
CountryService
包含findAll()
方法的实现。
CountryRepository
注入了@Autowired
注解。
findAll()
方法从数据库返回所有国家的列表。
com/zetcode/controller/MyController.java
MyController
处理来自客户端的请求。
控制器带有@Controller
注解。
ICountryService
注入到countryService
字段中。
从服务对象中,我们使用findAll()
方法检索所有国家。
处理和国家列表一起发送到showCountries.ftl
模板文件。 我们已经在 Maven POM 文件中提供了 Freemarker 依赖性; 因此,Spring Boot 会找出视图的扩展名。
resources/static/index.html
这是主页。 它包含一个获取所有国家的链接。
resources/templates/showCountries.ftl
这是showCountries.ftl
模板文件。 使用#list
指令,我们显示列表中的所有项目。
com/zetcode/Application.java
Application
是设置 Spring Boot 应用的入口。 @SpringBootApplication
注解启用自动配置和组件扫描。 它是@Configuration
,@EnableAutoConfiguration
和@ComponentScan
注解的便捷注解。
我们运行该应用。
在本教程中,我们展示了如何在 Spring 应用中使用@Repository
注解。