代码结构
-
不建议使用“default”package
当一个类不包含package声明时,它被认为是在“default package”中。应该避免使用使用“default package”。这导致使用Spring Boot applications@ComponentScan,@EntityScan或@SpringBootApplication注解时扫描所有的java class,包括jar包。 -
应遵循Java推荐的包命名约定并使用反向域名(例如,com.example.project)。
Main Application Class
建议将Main Application Class放在其他类之上的根包中。使用@SpringBootApplication注解标注主类,它隐含地定义了扫描哪些包。。
TIPS:如果不想使用@SpringBootApplication,可使用@EnableAutoConfiguration + @ComponentScan注释替代。
package com.example.myapplication;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
典型的代码结构布局
com
+- example
+- myapplication
+- MainApplication.java
|
+- customer
| +- Customer.java
| +- CustomerController.java
| +- CustomerService.java
| +- CustomerRepository.java
|
+- order
+- Order.java
+- OrderController.java
+- OrderService.java
+- OrderRepository.java
使用配置类
Spring Boot支持基于Java类的配置。尽管可以使用 SpringApplication.xml类配置,但我们通常建议使用单个@Configuration类来设置。
- 导入其他配置类
不需要把所有的@Configuration配置都放在同一个类里。可使用@Impor导入额外的配置类。或者可以使用 @ComponentScan自动获取所有Spring组件,包括 @Configuration类。 - 导入XML配置
如果必须使用XML文件来进行配置,仍然可以使用一个@Configuration class 然后使用@ImportResource注释来加载XML配置文件。 - 自动化配置类
@EnableAutoConfiguration:spring boot注解,在开启某些功能的时候进行自动配置 - 禁用特定的自动化配置类
使用@EnableAutoConfiguration的exclude属性来禁用import org.springframework.boot.autoconfigure。*; import org.springframework.boot.autoconfigure.jdbc。*; import org.springframework.context.annotation。*; @Configuration @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) public class MyConfiguration { }
依赖注入
可以自由地使用任何标准的Spring Framework技术来定义bean及其注入的依赖项。为简单起见,我们经常发现使用 @ComponentScan(@Component,@Service,@Repository,@Controller)(找到你的bean)和使用@Autowired(做构造函数注入)效果很好。