@RestController 是一個組合註解(stereotype),等同於 @Controller + @ResponseBody,告訴 Spring 該類處理 Web 請求並直接以字串形式回傳結果。@RequestMapping 提供路由資訊,將 HTTP 請求映射到特定方法。
@RestController
@RequestMapping("/")
public class Example {
@GetMapping
public String home() {
return "Hello World";
}
}
註:這兩個是 Spring MVC 註解,非 Spring Boot 專屬。
根據專案引入的 jar 依賴自動推測並配置 Spring。例如引入 spring-boot-starter-web 會自動配置 Tomcat 與 Spring MVC。可透過 exclude 屬性排除特定自動配置類:
@Configuration
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
public class MyConfiguration { }
@Configuration:標註配置類,等同於 XML 中的 <beans>。@Bean:標註方法,等同於 XML 中的 <bean>,方法回傳值註冊為 Bean。Spring Boot 推薦基於 Java 的配置。若必須用 XML,可用 @ImportResource 載入。
自動掃描並註冊 @Component、@Service、@Repository、@Controller 等 Bean。若應用類放在根套件下,無需參數即可自動掃描。
組合 @Configuration、@EnableAutoConfiguration、@ComponentScan(預設屬性),極大簡化主類宣告:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@Component
@ConfigurationProperties(prefix = "connection")
public class ConnectionSettings {
private String username;
private InetAddress remoteAddress;
// getters/setters
}
注入使用:@Autowired private ConnectionSettings connection;
也可用於 @Bean 方法綁定第三方元件屬性。支援 JSR-303 驗證(如 @NotNull)。
標註於 @Configuration 類,自動將 @ConfigurationProperties Bean 納入環境屬性配置,或直接列出屬性類快速註冊。
@Component:類別層級,自動掃描裝配,不使用 CGLIB 代理(直接操作原始物件)。等同於 @Service、@Controller、@Repository。@Bean:方法層級,顯式聲明 Bean 生成邏輯,常用於整合第三方庫或 Web Service 取得的類別。限制 @Component 或 @Configuration 載入時機。配合 spring.profiles.active(如 dev,hsqldb)指定生效環境。
@Configuration
@Profile("production")
public class ProductionConfiguration { }