Spring系列框架常用注解详解

Spring系列框架常用注解详解(Spring/Spring Boot/Spring Cloud)

一、Spring核心注解

1. @Component

作用:标记类为Spring组件,会被自动扫描到IoC容器
适用场景:通用组件类

@Component
public class UserService {
    // 业务逻辑
}

常见异常
NoSuchBeanDefinitionException(未扫描到组件)
处理:检查包路径是否在@ComponentScan范围内


2. @Autowired

作用:自动注入依赖
适用场景:需要依赖注入的字段/构造器/方法

@Service
public class OrderService {
    @Autowired
    private UserService userService;
}

常见异常
NoSuchBeanDefinitionException(未找到对应Bean)
NoUniqueBeanDefinitionException(存在多个同类型Bean)
处理:结合@Qualifier指定Bean名称


3. @Controller/@Service/@Repository

作用:组件分类注解(语义化标记)

  • @Controller:Web层组件
  • @Service:业务层组件
  • @Repository:数据访问层组件
@Controller
public class UserController {
    // 处理HTTP请求
}

4. @Configuration + @Bean

作用:声明配置类和Bean定义
适用场景:第三方库集成、复杂对象创建

@Configuration
public class AppConfig {
    @Bean
    public DataSource dataSource() {
        return new HikariDataSource();
    }
}

常见问题
Bean名称冲突(默认使用方法名作为Bean名称)


二、Spring Boot核心注解

1. @SpringBootApplication

作用:启动类注解(组合注解,包含@Configuration、@ComponentScan等)

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

2. @RestController

作用:组合@Controller和@ResponseBody,直接返回JSON

@RestController
@RequestMapping("/api/users")
public class UserController {
    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.findUser(id);
    }
}

3. @Value

作用:注入配置文件中的值
application.properties

app.max-size=100

使用示例

@Service
public class FileService {
    @Value("${app.max-size}")
    private int maxSize;
}

常见问题
IllegalArgumentException(值不存在或类型不匹配)
处理:添加默认值:@Value("${app.max-size:50}")


三、Spring Cloud常用注解

1. @EnableEurekaServer

作用:启用Eureka注册中心

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

2. @EnableDiscoveryClient

作用:启用服务发现(注册到注册中心)

@SpringBootApplication
@EnableDiscoveryClient
public class UserServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserServiceApplication.class, args);
    }
}

3. @FeignClient

作用:声明Feign客户端(服务间调用)

@FeignClient(name = "order-service")
public interface OrderClient {
    @GetMapping("/orders/{userId}")
    List<Order> getOrders(@PathVariable Long userId);
}

常见异常
FeignException(服务不可用或配置错误)
处理:检查服务名称、网络连通性、超时设置


四、常见问题汇总

1. Bean注入失败

现象:NoSuchBeanDefinitionException
解决方案

  • 检查类是否添加组件注解
  • 确认包路径是否被扫描
  • 检查是否存在多个同类型Bean(使用@Qualifier)

2. 配置读取失败

现象:Could not resolve placeholder
处理步骤

  1. 检查application.properties/yml文件名称
  2. 确认属性名拼写正确
  3. 检查@ConfigurationProperties前缀配置

3. 服务注册失败

现象:服务未出现在注册中心
排查方向

  1. 检查@EnableDiscoveryClient注解
  2. 验证注册中心地址配置
  3. 查看客户端与服务端版本兼容性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值