1、@Component
,表示一个被 Spring 托管的组件,通常用于标注业务逻辑类,被标注的类会被自动扫描并加入到 Spring 容器中,也可以用其他更具体的注解来替代,比如 @Service
、@Repository
和 @Controller
@Component
public class MyComponent {
// ...
}
2、@Autowired
,自动装配一个 Spring 托管的组件,可以用在构造函数、属性和 setter 方法上,Spring 会自动为其注入所需的依赖,如果有多个实现类匹配时,可以用 @Qualifier` 来指定具体的实现类。
@Component
public class MyComponent{
private MyService myService;
@Autowired
public MyComponent(MyService myService) {
this.myService = myService;
}
// ...
}
3、@Qualifier
,当一个接口有多个实现类时,用于指定具体的实现类
4、@Comfiguration
,表示一个配置类,用于定义 Spring 应用上下文中的 Bean,被标注的类会被 Spring 容器自动扫描并加入到容器中
@Configuration
public class MyComfiguration {
@Bean
public MyService myService(){
return new MyServiceImpl();
}
// ...
}
5、@Bean
,在配置类中使用,表示一个 Spring Bean,被标注的方法可以返回一个对象,Spring 会自动将改对象加入到容器中,并自动装配其依赖
@Configuration
public class MyComfiguration {
@Bean
public MyService myService(){
return new MyServiceImpl();
}
// ...
}
6、@Value
,用于从配置文件中读取属性值,被标注的属性可以是基本数据类型、字符串、数组、集合等类型,可以通过 ${property.name} 的形式来引用配置文件中的属性值
@Configuration
public class MyComponent {
@Value("${property.name}")
private String myProperty;
// ...
}
7、@RequestMapping
,定义映射请求,用于将请求映射到相应的方法上,可以用于类和方法上,
@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/hello")
public String hello() {
return "Hello, world!";
}
// ...
}
8、@Transactional
,用于在 Spring 事务管理下对方法进行事务处理,被标注的方法会自动开启事务,如果方法执行出错会自动回滚
@Service
public class MyService {
@Autowired
private UserRepository userRepository;
@Transactional
public void createUser(User user) {
userRepository.save(user);
}
}
9、@PathVariable
,用于将 URL 中的变量映射到方法的参数上,被标注的参数会自动装配上 URL 中对应的值
@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/users/{userId}")
public User getUser(@PathVariable Long userId) {
// ...
}
// ...
}
更多 Spring 注解欢迎补充…