Spring Boot的核心注解主要包括以下几个:
@SpringBootApplication: 这是一个复合注解,包含了多个注解,用于标识一个Spring Boot应用。它的定义如下:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication { /* ... */ }
这个注解包含了以下三个注解:
@RestController: 标识一个类是RESTful风格的控制器,用于处理HTTP请求,相当于@Controller和@ResponseBody的组合。
@RequestMapping: 映射HTTP请求到控制器处理方法。用于类和方法上,可以指定请求的路径、HTTP方法等。
@Autowired: 用于进行依赖注入,可以标注在字段、构造方法、Setter方法上。
@Service、@Repository、@Component: 用于标识一个类是服务类、仓储类或通用组件,分别用于标注服务层、数据访问层和通用组件。
@Configuration: 用于定义配置类,替代传统的XML配置文件。
下面是一个简单的Spring Boot应用的示例,演示了这些核心注解的使用:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
@RestController
@RequestMapping("/api")
class MyController {
@GetMapping("/hello")
public String hello() {
return "Hello, Spring Boot!";
}
}
在这个例子中,@SpringBootApplication
注解标识了主应用类,@RestController
和@RequestMapping
注解标识了一个简单的RESTful风格的控制器。当应用启动时,Spring Boot会自动扫描并加载这些注解标记的类,并进行相应的配置和初始化。