[英]Spring Boot - What Annotations Are Needed
我是Spring Boot的新手,我只是想知道我是否需要我目前擁有的主要方法上的所有注釋。
@Import(ServiceConfiguration.class)
@SpringBootApplication(scanBasePackages = {"com.myproject.rest",})
@EnableJpaRepositories({"com.myproject.dao.jpa"})
@EntityScan(basePackages = "com.myproject.domain.jpa")
類ServiceConfiguration.class具有以下注釋
@Configuration
@EnableConfigurationProperties({SlackServiceProperties.class})
我的數據庫對象帶有@Entity批注,其余類具有@RestController批注,而服務類具有@Component批注
只是想知道是否都需要它們,或者我可以排除其中的任何注釋嗎?
謝謝
如果您的主要方法位於頂級程序包中,那么您所需要做的就是:
@SpringBootApplication
它將自動遞歸掃描您的源代碼,並選擇任何@ Bean
, @Component
或@Configuration
如果您使用以下啟動器,還將自動配置Spring Data JPA:
spring-boot-starter-data-jpa
我認為這可能取決於您的需求,因為在您的示例中我沒有使用其中的一些。 當涉及到批注的幕后工作時,我不太熟悉Spring的所有“魔術”。 我只有一個功能完善的Spring Boot應用程序,
@SpringBootApplication
@Configuration
@ComponentScan
為了,
@SpringBootApplication是Spring識別此應用程序來自Spring Boot的方法(例如,結果是,沒有web.xml文件)。
@Configuration告訴Spring在src路徑上尋找.properties文件。 例如,在這里,您可以定義一個“ application.properties”文件來定義您的數據源(供Spring使用的數據庫信息)。
@Component告訴Spring在啟動應用程序時尋找“ Components”。 在整個應用程序中都可以找到@ Controllers,@ Service等。
有關許多Spring注釋的更准確,更深入的解釋,我可以指導您:
http://www.techferry.com/articles/spring-annotations.html和https://dzone.com/refcardz/spring-annotations
它們都具有出色的說明和注釋示例。
編輯: @Configuration和@ComponentScan包含在@SpringBootApplication中,正如Strelok在評論中指出的那樣。
希望能有所幫助。
如果您按照以下方式構建代碼:
com.myproject
- Application.java
com.myproject.configuration
- ServiceConfiguration.java
- OtherConfiguration.java
com.myproject.dao.jpa
- .. your repositories..
com.myproject.domain.jpa
- .. your @Entity classes...
您只需要使用@SpringBootApplication
注釋您的Application類。
Spring Boot將自動掃描和配置所有@Configuration
,存儲庫,其他@Component
和@Service
類。 這意味着你不需要手動@Import
配置,你不需要@EnableJpaRepositories
或@EntityScan
。
Spring Boot配置JPA所需要做的只是包括JPA啟動器:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
您可以按照以下教程進行操作: https : //spring.io/guides/gs/accessing-data-jpa/
您將看到它需要最少的注釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.