浅析Spring的五大类注解和方法注解

简介: 浅析Spring的五大类注解和方法注解

简单的将bean对象存储到Spring容器中,可以使用五大类注解实现,也可以通过@Bean方法注解实现。

本文重点围绕这几个问题展开:

1.为什么需要五大类注解?

2.五大类注解之间有没有关系?

3.Spring使用五大类注解生成beanName问题。

4.如何使用方法注解将对象更简单的存储到容器中?


五大类注解有:Controller(控制器)、Service(服务)、Repoistory(仓库)、Configuration(配置)、Component(组件)

使用示例:

  • 为什么需要五大类注解?

之前我们存储Bean 时,需要在 spring-config 配置中添加⼀⾏ bean 注册内容才⾏,如下图所示:


62cd148df0344d4cb8dee47c36fd1193.png

⽽现在我们只需要⼀个注解就可以替代之前要写⼀⾏配置的尴尬了,不过在开始存储对象之前,我们先要来点准备⼯作:配置扫描路径,这一点非常重要。

注意:想要将对象成功的存储到 Spring 中,我们需要配置⼀下存储对象的扫描包路径,只有被配置的包下的所有类,添加了注解才能被正确的识别并保存到 Spring 中。

在 spring-config.xml 添加如下配置:

使用五大类注解,可以让代码的可读性提高,让程序员能够直观的判断当前类的用途。

  • 五大类注解之间有没有关系?

我们可以简单的查看一下这五大类注解的源码:


其实不难看出,@Controller、@Service、@Repository、@Configuration都是基于@Component 实现的,所以@Component 可以认为是其他4个注解的父类。


  • Spring使用五大类注解生成beanName问题。

通过前面我们对注解使用,不难发现,我们都是使用的小驼峰。一般来说按照规范,类名我们一般用大驼峰命名,然后我们在使用BeanName的时候,一般用小驼峰,把类名的首字母变成小写。


但是出现了个例,出现了不同的情况,他的类名不是用大驼峰命名,在使用beanName的时候,还是按照以往的习惯将类名首字母变成小写,这个时候就报错了。当我们使用原类名的时候就可以了,这样的问题与我们之前的使用习惯相悖,到底是什么原因呢?下面接着分析:



通过分析了,我们也可以验证一下这个函数的作用:


总结一下,如果类名使用的是大驼峰,则使用的时候用的是小驼峰,那么类名是类似APIController这种前面全部大写的,则使用的时候用原类名。

4.如何使用方法注解将对象更简单的存储到容器中?

@Bean注解只能用在方法上,而且要注意只使用一个Bean注解是无法将对象储存到容器中的。

有时候会让命名更加规范,会使⽤@Bean 注解并重命名,使⽤重命名也能正确获取到对象。注意:重命名的其实是⼀个数组,⼀个 bean 可以有多个名字。

@Bean(name = {"u1", "us1"}) 
public User user1() { 
 User user = new User(); 
 user.setId(1); 
 user.setName("Java"); 
 return user; 
} 
//并且 name={} 可以省略,如下代码所示:
@Bean({"u1", "us1"}) 
public User user1() { 
   User user = new User(); 
   user.setId(1); 
   user.setName("Java"); 
   return user; 
} 


相关文章
|
2月前
|
Java 开发者 Spring
【SpringBoot 异步魔法】@Async 注解:揭秘 SpringBoot 中异步方法的终极奥秘!
【8月更文挑战第25天】异步编程对于提升软件应用的性能至关重要,尤其是在高并发环境下。Spring Boot 通过 `@Async` 注解简化了异步方法的实现。本文详细介绍了 `@Async` 的基本用法及配置步骤,并提供了示例代码展示如何在 Spring Boot 项目中创建与管理异步任务,包括自定义线程池、使用 `CompletableFuture` 处理结果及异常情况,帮助开发者更好地理解和运用这一关键特性。
125 1
|
2月前
|
缓存 Java 数据库连接
Spring Boot奇迹时刻:@PostConstruct注解如何成为应用初始化的关键先生?
【8月更文挑战第29天】作为一名Java开发工程师,我一直对Spring Boot的便捷性和灵活性着迷。本文将深入探讨@PostConstruct注解在Spring Boot中的应用场景,展示其在资源加载、数据初始化及第三方库初始化等方面的作用。
53 0
|
9天前
|
Java Spring 容器
Spring使用异步注解@Async正确姿势
Spring使用异步注解@Async正确姿势,异步任务,spring boot
|
10天前
|
Java 应用服务中间件 Spring
IDEA 工具 启动 spring boot 的 main 方法报错。已解决
IDEA 工具 启动 spring boot 的 main 方法报错。已解决
|
8天前
|
XML Java 数据格式
spring复习03,注解配置管理bean
Spring框架中使用注解配置管理bean的方法,包括常用注解的标识组件、扫描组件、基于注解的自动装配以及使用注解后的注意事项,并提供了一个基于注解自动装配的完整示例。
spring复习03,注解配置管理bean
|
9天前
|
XML 前端开发 Java
控制spring框架注解介绍
控制spring框架注解介绍
|
22天前
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
|
2月前
|
缓存 Java 开发者
Spring高手之路22——AOP切面类的封装与解析
本篇文章深入解析了Spring AOP的工作机制,包括Advisor和TargetSource的构建与作用。通过详尽的源码分析和实际案例,帮助开发者全面理解AOP的核心技术,提升在实际项目中的应用能力。
23 0
Spring高手之路22——AOP切面类的封装与解析
|
2月前
|
监控 安全 Java
【开发者必备】Spring Boot中自定义注解与处理器的神奇魔力:一键解锁代码新高度!
【8月更文挑战第29天】本文介绍如何在Spring Boot中利用自定义注解与处理器增强应用功能。通过定义如`@CustomProcessor`注解并结合`BeanPostProcessor`实现特定逻辑处理,如业务逻辑封装、配置管理及元数据分析等,从而提升代码整洁度与可维护性。文章详细展示了从注解定义、处理器编写到实际应用的具体步骤,并提供了实战案例,帮助开发者更好地理解和运用这一强大特性,以实现代码的高效组织与优化。
57 0
|
2月前
|
Java Spring
下一篇
无影云桌面