Spring框架常见的注解

Spring 的常见注解

注解说明
@Component、@Controller、@Service、@Repository使用在类上用于实例化Bean(标记一个类为 Spring 组件。)
@Autowired        使用在字段上,根据'类型'依赖注入
@Qualifier结合@Autowired,用于根据'名称'依赖注入(指定要注入的 Bean 的名称,解决多个同类型 Bean 的冲突。)
@Scope标注Bean的作用范围
@Configuration指定当前类是一个Spring配置类,当创建容器时会从该类上加载注解
@ConponentScan指定初始化容器时要扫描的包
@Bean使用在方法上,标注该方法返回值存储到Spring容器中
@Import使用@Import导入的类会被加载到IOC容器中
@Aspect、@Before、@After、@Around、@Pointcut用于切面编程(AOP)

Spring MVC 的常见注解

注解说明
@RequestMapping用于映射请求路径,可以定义在类上和方法上。用于类上,则表示类中的所有的方法都是以该地址作为父路径
@RequestBody       将请求体绑定到方法参数,接收 http 请求的 json 数据,将 json 转换为 java 对象
@RequestParam指定请求参数的名称
@PathViriable从请求路径下中获取请求参数 (/user/{id}) ,传递给方法的形式参数
@ResponseBody  实现将 controller 方法返回值转化为 json 对象响应给客户端
@RequestHeader获取指定的请求头数据
@RestController

组合了 @Controller@ResponseBody,用于定义 RESTful 控制器

Spring Boot 的常见注解

注解说明
@SpringBootApplication标记 Spring Boot 应用程序的主类。
@SpringBootConfiguration   与 @Configuration 注解作用相同,用来声明当前也是一个配置类。
@ComponentScan组件扫描,默认扫描当前引导类所在包及其子包
@EnableAutoConfiguration

启用 Spring Boot 的自动配置机制,自动配置应用程序所需的 Bean。

@Component和@Configuration有什么区别

  • @Component:用于标记普通的组件类,适用于业务逻辑组件。
  • @Configuration:用于标记配置类,适用于显式定义和配置 Bean。
  • 关键区别@Configuration 会被 CGLIB 代理,确保 @Bean 方法返回单例 Bean,而 @Component 不会触发代理机制。

@Component和@Bean有什么区别

  • @Component:用于标记普通的组件类,适用于业务逻辑组件。
  • @Bean:用于显式定义 Bean,适用于需要自定义 Bean 创建逻辑的场景。
  • 关键区别@Component 是类级别注解,由 Spring 容器自动创建 Bean;@Bean 是方法级别注解,可以在方法中自定义 Bean 的创建逻辑。

一般情况下@Bean和@Configuration搭配使用,但也可以和@Component结合使用。例如,在 @Component 类中定义 @Bean 方法,但这种方式不会触发 @Configuration 的代理机制。

@Component
public class MyComponent {

    @Bean
    public MyBean myBean() {
        return new MyBean();
    }
}

在这种情况下,myBean() 方法不会被代理,每次调用都会返回一个新的实例。

@Required注解有什么用

@Required 是 Spring 框架中的一个注解,用于标记 Bean 的某个属性(通常是依赖注入的属性)是必须的。如果标记了 @Required 的属性没有被注入值,Spring 容器在初始化 Bean 时会抛出 BeanInitializationException 异常。

  • @Required 只能用于 setter 方法,不能用于字段或构造方法。
  • 如果使用 @Autowired 注解,且 required=true(默认值),则不需要再使用 @Required,因为 @Autowired 已经确保了依赖必须存在。
  • 在 Spring 5.1 之后,@Required 逐渐被 @Autowired(required=true) 取代,因为后者更加灵活且功能更强大。

@RequestMapping注解有什么用?

  • 将 HTTP 请求映射到控制器中的处理方法。
  • 定义请求的 URL 路径、HTTP 方法、请求参数、请求头等条件。
  • 支持 RESTful 风格的 URL 设计。
  • 用在类级别:定义控制器的基础 URL 路径。
  • 用在方法级别:定义具体处理请求的方法和路径。

@RequestParam和@PathVariable有什么区别?

  • @RequestParam:用于从 URL 查询参数中提取值,适用于 GET 请求中的查询参数。
@GetMapping("/users/{id}")
public String getUserById(@PathVariable("id") Long id) {
    return "User ID: " + id;
}
//请求:GET /users?id=123
//输出:User ID: 123
  • @PathVariable:用于从 URL 路径中提取值,适用于 RESTful 风格的 URL。
@GetMapping("/users/{id}")
public String getUserById(@PathVariable("id") Long id) {
    return "User ID: " + id;
}
//请求:GET /users/123
//输出:User ID: 123
  • 两者可以结合使用,以满足更复杂的业务需求。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值