Spring的常用注解:解锁Spring注解的魔力!

举报
bug菌 发表于 2025/05/30 17:31:32 2025/05/30
【摘要】 🏆本文收录于「滚雪球学SpringBoot」专栏(全网一个名),手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

🏆本文收录于「滚雪球学SpringBoot」专栏(全网一个名),手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8

前言 🤔

Hey,Spring的世界里,除了强大的IoC容器,还有一系列方便又好用的注解,今天我们就来深度探索这些Spring的常用注解!你是不是经常看到@Component@Service@Controller等注解,却不完全明白它们的作用和区别?别着急,今天我会用通俗易懂的方式带你一步步掌握这些注解的使用。💡


目录 📋

  1. @Component@Service@Repository@Controller注解 📦
  2. @Autowired@Value@Qualifier注解的使用 🔌
  3. @Configuration@Bean注解 🛠️
  4. @Scope注解:定义Bean的作用域 🌍

1. @Component@Service@Repository@Controller注解 📦

在Spring中,这些注解是用来标识不同类型的组件类,它们本质上是同一个注解@Component的衍生版本。你可以把它们看作是Spring容器中Bean的特殊化标识。虽然这些注解的作用大同小异,但它们帮助我们对不同的业务层次和结构进行区分。具体来说,Spring提供了以下四种常见的注解:

@Component 注解

  • 作用:标识一个普通的Spring组件,可以自动注册为Bean。

  • 用途:当你创建一个普通的Bean类时,使用@Component即可让Spring容器管理它。

  • 示例

    @Component
    public class MyComponent {
        public void doSomething() {
            System.out.println("Doing something...");
        }
    }
    

@Service 注解

  • 作用:通常用于标识Service层的组件,表示这是一个业务逻辑处理的Bean。

  • 用途@Service注解不仅标识Bean,还可以为类提供更多的语义,使其更符合Spring的层次结构。

  • 示例

    @Service
    public class UserService {
        public void createUser() {
            System.out.println("Creating user...");
        }
    }
    

@Repository 注解

  • 作用:标识持久化层的Bean,用于DAO(数据访问对象)层,负责数据库操作。

  • 用途@Repository具有额外的功能,比如将数据库相关的异常转换为Spring的DataAccessException

  • 示例

    @Repository
    public class UserRepository {
        public void saveUser() {
            System.out.println("Saving user to database...");
        }
    }
    

@Controller 注解

  • 作用:用于标识Spring MVC中的控制器类,处理HTTP请求。

  • 用途@Controller通常与@RequestMapping等注解配合使用,用于响应客户端的请求。

  • 示例

    @Controller
    public class UserController {
        @RequestMapping("/user")
        public String showUser() {
            return "userPage";
        }
    }
    

2. @Autowired@Value@Qualifier注解的使用 🔌

Spring提供了一些注解来自动注入依赖或者为Bean提供其他配置。通过这些注解,我们可以轻松管理依赖关系,避免手动实例化对象。

@Autowired 注解

  • 作用:用于自动装配Bean,Spring会根据类型自动注入依赖。

  • 用途:可以标注在构造器、字段、或者Setter方法上。

  • 示例

    @Service
    public class UserService {
        @Autowired
        private UserRepository userRepository;
        
        public void createUser() {
            userRepository.saveUser();
        }
    }
    

@Value 注解

  • 作用:用于注入外部配置(如属性文件中的值)到Spring Bean中。

  • 用途:可以用来注入简单类型或配置值。

  • 示例

    @Component
    public class MyComponent {
        @Value("${app.name}")
        private String appName;
        
        public void printAppName() {
            System.out.println("App Name: " + appName);
        }
    }
    

@Qualifier 注解

  • 作用:用来解决自动装配冲突。@Qualifier指定要注入的具体Bean的名称。

  • 用途:当存在多个相同类型的Bean时,使用@Qualifier指定具体注入哪一个。

  • 示例

    @Autowired
    @Qualifier("userRepository")
    private Repository repository;
    

3. @Configuration@Bean注解 🛠️

在Spring中,@Configuration@Bean是用于Java配置的注解,允许我们通过Java代码代替XML文件进行配置。

@Configuration 注解

  • 作用:用于标识配置类,表明这是一个Spring配置类,其中包含Bean的定义。

  • 用途:通常与@Bean一起使用,用来声明和配置Spring的Bean。

  • 示例

    @Configuration
    public class AppConfig {
        @Bean
        public MyService myService() {
            return new MyService();
        }
    }
    

@Bean 注解

  • 作用:在@Configuration类中,标注一个方法,用来创建并注册一个Bean。

  • 用途:通过@Bean注解,Spring会将该方法的返回值作为Bean注入到容器中。

  • 示例

    @Configuration
    public class AppConfig {
        @Bean
        public MyService myService() {
            return new MyService();
        }
    }
    

4. @Scope注解:定义Bean的作用域 🌍

在Spring中,Bean有不同的作用域,@Scope注解允许我们指定Bean的作用域。常见的作用域有:

  1. Singleton(默认作用域):Spring容器中只有一个实例。
  2. Prototype:每次获取Bean时,都会创建一个新的实例。
  3. Request:每次HTTP请求都会创建一个新的Bean实例(用于Web应用)。
  4. Session:每次HTTP会话都会创建一个新的Bean实例(用于Web应用)。

@Scope 注解的使用示例:

@Scope("singleton")
@Component
public class SingletonBean {
    // This bean will have a single instance
}
@Scope("prototype")
@Component
public class PrototypeBean {
    // This bean will have a new instance every time it's requested
}

总结 🌟

通过使用Spring的常用注解,我们可以非常方便地管理Bean、自动注入依赖、配置Bean的生命周期和作用域。无论是在开发Web应用、业务逻辑层,还是数据访问层,Spring的注解都能让我们的代码更加简洁、清晰和可维护。

这些注解不仅使我们的代码更加优雅,还让Spring的配置变得更加灵活和强大。希望通过这篇文章,大家能够更好地掌握Spring的注解使用,提升开发效率,避免手动配置的繁琐。

🧧福利赠与你🧧

  无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学SpringBoot」专栏(全网一个名),bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门SpringBoot,就像滚雪球一样,越滚越大, 无边无际,指数级提升。

  最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。

  同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。

✨️ Who am I?

我是bug菌(全网一个名),CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云多年度十佳博主/价值贡献奖,掘金多年度人气作者Top40,掘金等各大社区平台签约作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;更多精彩福利点击这里;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿。

-End-

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。