spring boot 注解
核心注解
@SpringBootApplication
这是 Spring Boot 项目的入口注解,包含了以下三个注解的组合:@Configuration
、@EnableAutoConfiguration
和@ComponentScan
。
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
-
@Configuration
:标记类是一个配置类。用于标记一个类为 Spring 配置类,该类可以替代传统的 XML 配置文件。
@Configuration
public class AppConfig {
// Bean definitions
}
-
@EnableAutoConfiguration
:启用 Spring Boot 的自动配置机制。用于自动配置 Spring 应用程序上下文,尝试根据已添加的 jar 依赖自动配置你的 Spring 应用。
@EnableAutoConfiguration public class AppConfig { // Configuration details }
-
@ComponentScan
:启用组件扫描。用于自动扫描并注册带有
@Component
、@Service
、@Repository
和@Controller
注解的类。
@ComponentScan(basePackages = "com.example")
public class AppConfig {
// Configuration details
}
组件扫描
@Repository
- 作用: 标识持久层组件,实际上是@Component的一个特化,用于表示数据访问组件。
- 数据访问组件(Data Access Component)通常是指在软件系统中负责数据访问和持久化的部分或模块。在典型的企业应用程序中,数据访问组件通常涉及与数据库交互、执行数据操作(如增删改查)、数据转换和持久化等任务。
@Repository
public class MyRepository {
}
@Service
-
作用: 标识服务层组件,实际上是
@Component
的一个特化,用于表示业务逻辑服务。 -
细节: 用于标识服务层的类,这些类通常包含业务逻辑。
@Service public class MyService { }
@Controller
- 作用: 标识控制层组件,实际上是@Component的一个特化,用于表示Web控制器。
@RestController
是@Controller
和@ResponseBody
的组合,通常用于创建 RESTful Web 服务。- 细节: 用于标识Spring MVC控制器,处理Web请求并返回视图。
@Controller
public class MyController {
}
@Component
- 作用: 将一个类标识为Spring组件(Bean),可以被Spring容器自动检测和注册。
- 细节:
@Component
是一个通用的注解,可以用来标注任何Spring管理的Bean。
@Component
public class MyComponent {
}
依赖注入
@Autowired
@Autowired
是最常用的依赖注入注解。它可以应用于构造器、方法或字段上。
@Service
public class MyService {
@Autowired
private MyRepository myRepository;
// Other service methods
}
@Qualifier
@Qualifier
用于在有多个候选 bean 时进行精确注入。
@Service
public class MyService {
@Autowired
@Qualifier("specificRepository")
private MyRepository myRepository;
// Other service methods
}
@Resource
@Resource
是 JSR-250 的注解,既可以通过名称也可以通过类型注入。
import javax.annotation.Resource;
@Service
public class MyService {
@Resource(name = "specificRepository")
private MyRepository myRepository;
// Other service methods
}
@ConfigurationProperties
@ConfigurationProperties
用于将配置文件中的属性绑定到 Java 类。与@Component
配合使用
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "app")
public class AppProperties {
private String name;
private String description;
// Getters and setters
}
@Bean
@Bean
用于在配置类中声明一个 Spring 管理的 Bean。
@Configuration
public class MyConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
}