当前位置:首页 > 技术文章 > 正文内容

揭秘SpringBoot的魔法:20个注解让你的应用飞起来

zonemu3个月前 (07-16)技术文章28

在Java开发的世界里,SpringBoot以其强大的功能和简洁的配置,成为了开发者们的宠儿。但你知道吗?SpringBoot的真正魔力,其实隐藏在那些看似不起眼的注解中。今天,就让我们一起揭开这些注解的神秘面纱,看看它们是如何让SpringBoot应用变得如此强大和灵活的。

20个SpringBoot常用注解概览

  1. @SpringBootApplication:启动SpringBoot应用的魔法棒。
  2. @RestController:让控制器变身为RESTful API的神器。
  3. @Controller:传统Web控制器的守护神。
  4. @Service:服务层组件的身份证。
  5. @Repository:数据访问层的守护者。
  6. @Component:Spring组件的通用标签。
  7. @Autowired:自动依赖注入的魔法师。
  8. @Value:注入配置值的传送门。
  9. @Qualifier:多Bean注入时的导航仪。
  10. @PostConstruct:Bean初始化后的仪式。
  11. @PreDestroy:Bean销毁前的告别礼。
  12. @Configuration:配置类的标签。
  13. @Bean:配置类中Bean的声明。
  14. @Profile:环境特定Bean的守护神。
  15. @Scope:Bean作用域的界定者。
  16. @Lazy:Bean延迟加载的控制者。
  17. @DependsOn:Bean创建依赖的指定者。
  18. @Primary:多Bean选择时的首选者。
  19. @RequestMapping:HTTP请求的导航员。
  20. @GetMapping, @PostMapping, @PutMapping, @DeleteMapping:HTTP请求方法的专属处理者。

详细解释与应用场景

@SpringBootApplication

这是启动SpringBoot应用的顶级注解,它整合了多个注解,简化了应用的启动配置。


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

@RestController 和 @GetMapping

@RestController用于定义REST风格的控制器,@GetMapping用于处理GET请求。

@RestController
public class MyRestController {
    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, SpringBoot!";
    }
}

@Service用于服务层,包含业务逻辑。

@Service
public class MyService {
    public void performService() {
        // 业务逻辑
    }
}

@Repository用于数据访问层,提供数据库操作。

@Repository
public interface MyRepository extends JpaRepository<User, Long> {
    List<User> findByName(String name);
}

@Autowired用于自动依赖注入。

@Component
public class MyComponent {
    @Autowired
    private MyService myService;
}

@Value用于注入配置值。

@Component
public class MyComponent {
    @Value("${app.name}")
    private String appName;
}

@Qualifier当有多个Bean时,用于指定注入的Bean名称。

@Autowired
@Qualifier("myService")
private MyService myService;

@PostConstruct @PreDestroy

分别用于Bean初始化后和销毁前执行的方法。

@Component
public class MyComponent {
    @PostConstruct
    public void init() {
        // 初始化逻辑
    }

    @PreDestroy
    public void cleanup() {
        // 清理逻辑
    }
}

@Configuration 和 @Bean

@Configuration用于标记配置类,@Bean用于声明一个Bean。

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

@Profile用于指定Bean在哪个环境下创建。

@Configuration
@Profile("dev")
public class DevConfig {
    @Bean
    public MyDevBean myDevBean() {
        return new MyDevBean();
    }
}

@Scope 和 @Lazy

@Scope用于指定Bean的作用域,@Lazy用于控制Bean的延迟加载。

@Component
@Scope("prototype")
@Lazy
public class MyPrototypeBean {
    // 原型Bean,延迟加载
}

@DependsOn用于指定Bean的创建依赖。

@Component
@DependsOn("myBean")
public class MyDependentBean {
    // 依赖myBean
}

@Primary用于在多个Bean中指定优先使用的Bean。

@Component
@Primary
public class MyPrimaryBean implements MyInterface {
    // 优先使用的Bean
}

HTTP请求映射注解

用于映射HTTP请求到控制器的处理方法。

@RestController
@RequestMapping("/users")
public class UserController {
    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        // 获取用户逻辑
    }
}

结语

通过本文的介绍,我们深入了解了SpringBoot中20个常用注解的作用和应用场景。这些注解是构建SpringBoot应用的基石,能够帮助我们以一种声明式、简洁的方式开发应用。希望本文能够帮助读者更好地理解SpringBoot的注解,并在实际开发中灵活运用它们。

相关文章

Vue3 中,父子组件如何传递参数?(vue父子组件传递数据方法)

在 Vue3 中,组件化开发是非常重要的特征,那么组件之间传值就是开发中常见的需求了。组件之间的传值三种方式:父传子、子传父、非父子组件传值。一、父传子( defineProps )父组件主要通过使用...

Vue父子组件参数传递方法(vue父子组件传参方式)

在 Vue 中,父子组件之间的参数传递是常见的需求,主要通过 Props 和 自定义事件 实现。以下是详细说明和代码示例:一、父组件向子组件传递参数(Props)父组件通过 属性 向子组件传递数据,子...

react hooks自定义组件居然能这样做

前言  这里写一下如何封装可复用组件。首先技术栈 react hooks + props-type + jsx封装纯函数组件。类组件和typeScript在这不做讨论,大家别白跑一趟。接下来会说一下封...

vue 3 学习笔记 (八)——provide 和 inject 用法及原理

在父子组件传递数据时,通常使用的是 props 和 emit,父传子时,使用的是 props,如果是父组件传孙组件时,就需要先传给子组件,子组件再传给孙组件,如果多个子组件或多个孙组件使用时,就需要传...

用IDEA开发如何用Git快速拉取指定分支代码?

1,准备空的文件夹,git init2,关联远程仓库,git remote add origin gitlab地址3,拉取远程分支代码,git pull origin 远程分支名再用IDEA打开项目即...

Gitlab 的使用和代码审查流程介绍

1、先简洁介绍下项目常用的信息-面板统计页面2、用户信息面板3、服务器信息4、项目信息5、重点介绍代码提交审核机制和授权合并机制开发人员推送代码的时候不能直接推送到master,否则就会报错。此时开发...