【Java】谈谈Spring的常用注解


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 注解欢迎补充…

猜你喜欢

转载自blog.csdn.net/Your_Boy_Tt/article/details/130347116