浅析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; 
} 


相关文章
|
1月前
|
XML Java 测试技术
Spring IOC—基于注解配置和管理Bean 万字详解(通俗易懂)
Spring 第三节 IOC——基于注解配置和管理Bean 万字详解!
121 26
|
2月前
|
缓存 Java 数据库
SpringBoot缓存注解使用
Spring Boot 提供了一套方便的缓存注解,用于简化缓存管理。通过 `@Cacheable`、`@CachePut`、`@CacheEvict` 和 `@Caching` 等注解,开发者可以轻松地实现方法级别的缓存操作,从而提升应用的性能和响应速度。合理使用这些注解可以大大减少数据库的访问频率,优化系统性能。
188 89
|
14天前
|
人工智能 自然语言处理 Java
Spring 集成 DeepSeek 的 3大方法(史上最全)
DeepSeek 的 API 接口和 OpenAI 是兼容的。我们可以自定义 http client,按照 OpenAI 的rest 接口格式,去访问 DeepSeek。自定义 Client 集成DeepSeek ,可以通过以下步骤实现。步骤 1:准备工作访问 DeepSeek 的开发者平台,注册并获取 API 密钥。DeepSeek 提供了与 OpenAI 兼容的 API 端点(例如),确保你已获取正确的 API 地址。
Spring 集成 DeepSeek 的 3大方法(史上最全)
|
3月前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
185 73
|
19天前
|
监控 Java Spring
SpringBoot:SpringBoot通过注解监测Controller接口
本文详细介绍了如何通过Spring Boot注解监测Controller接口,包括自定义注解、AOP切面的创建和使用以及具体的示例代码。通过这种方式,可以方便地在Controller方法执行前后添加日志记录、性能监控和异常处理逻辑,而无需修改方法本身的代码。这种方法不仅提高了代码的可维护性,还增强了系统的监控能力。希望本文能帮助您更好地理解和应用Spring Boot中的注解监测技术。
54 16
|
3月前
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
67 21
|
3月前
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
|
3月前
|
Java Spring
【Spring配置相关】启动类为Current File,如何更改
问题场景:当我们切换类的界面的时候,重新启动的按钮是灰色的,不能使用,并且只有一个Current File 项目,下面介绍两种方法来解决这个问题。
|
3月前
|
Java Spring
【Spring配置】idea编码格式导致注解汉字无法保存
问题一:对于同一个项目,我们在使用idea的过程中,使用汉字注解完后,再打开该项目,汉字变成乱码问题二:本来a项目中,汉字注解调试好了,没有乱码了,但是创建出来的新的项目,写的注解又成乱码了。
|
10月前
|
Java API Spring
Spring容器如何使用一个注解来指定一个类型为配置类型
Spring容器如何使用一个注解来指定一个类型为配置类型
92 0