我是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注释
只是想知道他们都需要或者我可以排除任何这些注释吗?
由于
答案 0 :(得分:3)
如果您的主要方法位于顶级包中,那么您只需要:
@SpringBootApplication
它将自动以递归方式扫描您的来源,然后选择所有@ Bean
,@Component
或@Configuration
如果您正在使用此启动器,还会自动配置Spring Data JPA:
spring-boot-starter-data-jpa
答案 1 :(得分:1)
我认为这可能取决于你需要什么,因为我没有使用你的例子中的一些。我不太熟悉Spring的所有"魔法"当谈到幕后工作时,它会用注释来完成。我有一个功能完善的Spring Boot应用程序只有
@SpringBootApplication
@Configuration
@ComponentScan
按顺序,
@SpringBootApplication 是Spring识别此应用程序来自Spring Boot的方法(例如,一个结果是没有web.xml文件)。
@Configuration 告诉Spring在src路径上查找.properties文件。例如,您可以在此处定义" application.properties"用于定义数据源的文件(Spring使用的数据库信息)。
@Component 告诉Spring寻找"组件"当它启动应用程序时。几乎可以在整个应用程序中找到@Controllers,@ Service等。
有关Spring的许多注释的更准确和深入的解释,我可以指导您:
http://www.techferry.com/articles/spring-annotations.html 和 https://dzone.com/refcardz/spring-annotations
这两者都有很好的描述和注释示例。
编辑: @Configuration和@ComponentScan包含在@SpringBootApplication中,正如Strelok在评论中指出的那样。
希望有所帮助。
答案 2 :(得分:1)
如果您构建代码如下:
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
类。这意味着您 DON' 需要手动@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/
您将看到它需要最少的注释。