Spring Boot项目结构
官方建议主程序Application类放在最顶层package中,@SpringBootApplication注解往往放在主类,它会自动扫描所在包之下的所有类,如果放在其他package中可能会发生找不到bean的异常
com
+- example
+- myapplication
+- Application.java
|
+- customer
| +- Customer.java
| +- CustomerController.java
| +- CustomerService.java
| +- CustomerRepository.java
|
+- order
+- Order.java
+- OrderController.java
+- OrderService.java
+- OrderRepository.java
@SpringBootApplication注解使用如下所示
package com.example.myapplication;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
配置类
- Spring Boot支持基于Java的配置类,定义配置类需要对类@Configuration注解。定义配置类时不需要把所有配置都放在一个类中,@Import会导入额外的配置类。
- 如果需要导入XML配置,可以在@Configuration类中通过@ImportResource注释来加载XML配置文件
- Spring Boot自动配置可以根据添加的jar依赖项自动配置Spring应用程序,可以通过@EnableAutoConfiguration或者@SpringBootApplication来选择自动配置;如果不需要自动配置可以选择exclude排除
- @SpringBootApplication注解有三个功能,配置、自动配置和组件扫描,也可以启用三个单独的注解来配置
- @EnableAutoConfiguration 开启自动配置
- @ComponentScan:在类所在的包中启动扫描
- @Configuration:允许在上下文中注册额外的bean或导入其他配置类
package com.example.myapplication;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
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 Beans和依赖注入
使用@ComponentScan可以扫描发现bean,Spring Boot会将@Component,@Service,@Repository,@Controller等注解类自动注册为Spring Bean
package com.example.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class DatabaseAccountService implements AccountService {
private final RiskAssessor riskAssessor;
@Autowired
public DatabaseAccountService(RiskAssessor riskAssessor) {
this.riskAssessor = riskAssessor;
}
// ...
}
运行Spring Boot程序
- 通过IDE运行
- 通过java命令运行
java -jar target / myapplication-0.0.1-SNAPSHOT.jar
- 通过Maven运行
mvn spring-boot:run