Spring五大类注解 || Bean的更简单存储

这篇具有很好参考价值的文章主要介绍了Spring五大类注解 || Bean的更简单存储。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言:

五大类注解

@Controller

@Service

@Repository

@Component

@Configuration

JavaEE标准分层

阿里分层结构

BeanName命名规则

方法注解

@Bean

注入方式取Bean

属性注入

Setter注入

构造方法注入

@Resource


前言:

    使用Spring容器,为我们程序开发带来了很大的遍历。那么我们就需要学习Spring带来的一些机制,灵活的使用和理解这些机制,相信会有很多收获。

五大类注解

@Controller

    控制器,验证用户请求数据的正确性(安保系统)。直接和前端打交到,验证前端发来请求是否正确。

@Service

    服务,编排和调度具体执行方法的(客服中心)。不会直接操作数据库,根据请求判断具体调用哪个方法。

@Repository

    数据持久层,直接和数据库交互(执行者)(DAO层 data access object)

@Component

    组件(工具类)。为整个项目存放一些需要使用的组件,放在其他位置不是很合适。

@Configuration

    配置项(项目中的一些配置)。当项目启动时,如果遇到哪个类被这个注解修饰,那么就会加载其中的一些配置。

注意:

    1)上述五大类注解,xml配置的路径中只要能查找到(递归查询),其所修饰的类都会作为bean存储到spring中(类名需不同)。当然如果没有上述五大类注解那么当前类是不能作为bean存储到spring中的。

    2)五大类注解存在不同含义,当我们看到某一个注解就可以明确这个了类是做什么的。

    3)除了Component以外的其他四大类注解,都有Component注解的功能,也就是它的扩展。(看源码可发现其他四大类注解上面都有@Component注解)。

JavaEE标准分层

Spring五大类注解 || Bean的更简单存储

阿里分层结构

Spring五大类注解 || Bean的更简单存储

注意:阿里分层结构是对JavaEE标准分层在服务层(Service)做了一个扩展。

BeanName命名规则

Spring五大类注解 || Bean的更简单存储

注意:

    逐级向下看源码,发现Spring中使用的jdk中的方法来作为BeanName的命名规则。

    1)默认是第一个字母小写。

    2)如果前两个字母的大写,即BeanName就是原类名。

方法注解

@Bean

注意:

    1)可以将方法的返回值添加到spring中。

    2)方法注解必须搭配类注解使用,spring不会扫描所有类的方法,只扫描类注解下的方法(提升效率)

    3)@Bean的命名规则,默认是方法名,也可以起多个名字(name属性),这个时候默认的名字就无效了

    4)控制注入顺序(@Order注解)值越大,注入越迟,是类注解。如果对象一样,名字也一样(覆盖式注入)

注入方式取Bean

@Autowired

属性注入

    属性注入(spring会自动的将spring对象注入到@Autowired修饰的属性这里)

    根据类型和名字(spring中的对象Id),来确定唯一的一个对象,

优点:

    使用非常简单,只需要在属性上加@Autowired注解即可。

缺点:

    1)无法实现final修饰的变量注入

    2)兼容不好,只适用于IoC容器

    3)风险:因为写法简单,所以违背单一设计原则概率更大(可以注入多个对象,使用多个属性)

Setter注入

    Setter注入(使用set方法,spring会将对象传入到set方法中)(根据类名和对象名来确定)

优点:

    符合单一设计原则(每个方法只能传递一个对象)

缺点:

    1)不能注入不可变对象(final修饰)

    2)使用Setter注入的对象可能会被修改(可以调用set方法进行修改参数)

构造方法注入

    构造方法注入(官方推荐的做法),使用构造方法。

    如果只有一个构造方法,可以省略@Autowired,有多个构造方法就不能省略了。

优点:

    1)可以注入不可变对象(final修饰的)。

    2)注入的对象不会改变,构造方法只执行一次。

    3)构造方法可以保证对象完全被初始化(类加载时就会执行)。

    4)通用性更好。

提出问题:

    为什么构造方法可以注入不可变的对象而Setter和属性注入却不可以呢?

    答:final修饰的对象需要直接赋值或者在构造方法里进行初始化。类加载过程中就会执行构造方法,那么就可以初始化final修饰的对象。而Setter注入和属性注入是spring实现的,执行时机在类加载之后,所以就不能修改final修饰的对象。

@Resource

    使用JDK 提供的的@Resource注解也可以实现对象的注入。

注意:

    1)出身不同:@Autowired 来自于 Spring,而@Resource 来自于 JDK 的注解

    2)使用时设置的参数不同:相比于 @Autowired 来说,@Resource ⽀持更多的参数设置,例如name 设置,根据名称获取 Bean。

    3)@Autowired 可用于 Setter 注入、构造函数注⼊和属性注入,而@Resource 只能用于 Setter 注入和属性注入,不能用于构造函数注入

    4)@Autowired先根据类型查找,之后再根据名称查找。

    5)@Resource先根据名称查找,再根据类型查找。

小结:

    使用五大类注解和Bean的更简单存储可以快速提升我们开发的效率,学习框架我们要理解框架的本质作用。文章来源地址https://www.toymoban.com/news/detail-422668.html

到了这里,关于Spring五大类注解 || Bean的更简单存储的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring使用注解存储Bean对象

    在前一篇博客中( Spring项目创建与Bean的存储与读取(DL))介绍的是通过配置文件注册对象从而存储到 Spring 中,这种方式其实还是挺繁琐的。 实际上,在使用学习使用 Spring过程中,当我们要实现一个功能的时候,先应该考虑的是有没有相应的注解是实现对应功能的,Spring 中

    2024年02月16日
    浏览(38)
  • 【Spring】使用注解读取和存储Bean对象

     哈喽,哈喽,大家好~ 我是你们的老朋友: 保护小周ღ    谈起Java 圈子里的框架,最年长最耀眼的莫过于 Spring 框架啦,本期给大家带来的是:  将对象存储到 Spring 中、Bean 对象的命名规则、从Spring 中获取bean 对象、注入的、@Autowired 与 @Resource 的区别、解决@Bean 方

    2024年02月13日
    浏览(46)
  • 【Spring】(三)Spring 使用注解存储和读取 Bean对象

    前面的文章详细的介绍了 Spring 对象的创建,以及对 Bean 对象的存取操作,但是通过配置文件注册 Bean 对象以及使用 ApplicationContext 或 BeanFactory 的方式获取 Bean 对象的操作就显得格外的复杂。因此,本文主要就是详细介绍了一种更加简单的方式来实现对 Bean 对象更加简单的储

    2024年02月14日
    浏览(37)
  • Spring(二):更简单的存储与读取 Bean

    通过上一章的Spring,我们基本实现了Spring 的读取与存储,但是在操作过程中,读取与存储并没有那么得“简单” 一套流程还是很复杂,所以,本章来介绍更加简单得读取与存储。 在 Spring 中想要更简单的存储和读取对象的核⼼是使⽤注解,也就是我们接下来要学习 Spring 中的

    2024年02月15日
    浏览(35)
  • Spring更简单的存储和读取Bean对象

    目录 1.第一个Spring项目 2.存储Bean对象 2.1 准备工作 2.2 五大类注解 2.3 方法注解@Bean 2.4 Bean对象的默认命名规则 3. 读取Bean对象 3.1 属性注入 3.2 setter注入 3.3 构造方法注入 3.4 注入异常问题 3.5 注入方式优缺点 3.6 @Autowired和@Resource的区别 在学习更简单的方式来读取和存储Bean对象

    2024年02月03日
    浏览(50)
  • Spring 更简单的读取和存储对象、使用注解存取对象

    我们知道物件都会随着时代的发展,越变越简单的。Spring 框架也不意外;我们在之前存储Bean对象是在配置文件中添加 bean/bean 来存入Bean对象到Spring当中的,使用那个类对象就要存入那个,一个两个类对象还好,如果需要的对象多了,就会非常麻烦。现在,随着 Spring 发展不用

    2024年02月11日
    浏览(47)
  • 探秘Spring中Bean的注解宝典:解读存取Bean的相关注解及用法

    将对象存储在 Spring 中,有两种注解类型可以实现: 类注解:@Controller、@Service、@Repository、@Component、@Configuration 方法注解:@Bean 如下使用@Controller存储Bean代码: 使用获取上下文的方法获取上面存储的对象 效果为 如下使用@Service存储Bean代码: 输出结果跟@Controller一样 如下使

    2024年02月16日
    浏览(42)
  • spring-注解开发bean

    使用@Component定义bean 在配置文件中通过组建扫描加载bean 3.也可以通过不要配置文件,定义类,使用@Configuration,来代替配置文件 基于注解定义bean 1.@component,大部分的bean都可以通过这个来定义 1.1@Controller,控制层 1.2@Service,服务层 1.3@Repository,数据层 2.对于纯注解的开发,还

    2024年02月13日
    浏览(38)
  • 11Spring IoC注解式开发(上)(元注解/声明Bean的注解/注解的使用/负责实例化Bean的注解)

    注解的存在主要是为了简化XML的配置。Spring6倡导全注解开发。 注解开发的优点 :提高开发效率 注解开发的缺点 :在一定程度上违背了OCP原则,使用注解的开发的前提是需求比较固定,变动较小。 自定义一个注解: 该注解上面修饰的注解包括:Target注解和Retention注解,这两个注

    2024年01月21日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包