转载自百家号作者:有趣的代码

@Component、@Service、@Controller、@Repository;@Configuration、@Bean区别,使用场景

从spring3.0开始,基于javaconfig的项目,支持使用java来定义bean,而不是传统的xml文件。@Component是一个通用的stereotype,可以用于任何受容器管理的bean。而@Service、@Controller、@Repository是用于特殊形式的@Component,注解在类型上,但本质是一样的。

在@Configuration中配合@ComponentScan使用,spring 自动检测stereotype类,然后在application context注册相应的bean definition。在运行时会生成CGLIB的子类,在调用父类方法前,子类会先查找缓存。从spring3.2开始,CGLIB已经被包含在spring中。

CGLIB的限制:

1、@Configuration注解的类不能是final;

2、从4.3开始,任何构造函数都允许在配置类上使用,包括使用@Autowired或用于默认注入的单个非默认构造函数声明。

3、若不想要CGLIB对bean的限制,则可以使用@Component作为配置类,跨方法的调用不会被拦截,因此你必须使用构造函数或方法级别的依赖注入。

@Bean注解在方法上,用于实现工厂方法。与@Configuration搭配使用,不同的方法(只new一次)代表相同的实例,可以用于内部bean的依赖只需要调用另一个bean相应的方法;而与@Component搭配使用,不同的方法(只new一次)代表不同的实例,即不能用于内部bean的依赖。

若是第三方服务想由spring容器管理,则需要使用@Bean注解提供工厂方法。若是自己的服务则可以注解@Component(@Service、@Controller、@Repository),由容器自动扫描。

 为了让学习变得轻松、高效,今天给大家免费分享一套Java教学资源。帮助大家在成为Java架构师的道路上披荆斩棘。需要资料的欢迎加入学习交流群:9285,05736

spring中基于Java容器配置注解的区别及使用场景相关推荐

  1. Spring中基于Java的配置@Configuration和@Bean用法

    spring中为了减少xml中配置,可以生命一个配置类(例如SpringConfig)来对bean进行配置. 一.首先,需要xml中进行少量的配置来启动Java配置: [java] view plai ...

  2. spring 加载java类_在Spring中基于Java类进行配置的完整步骤

    在Spring中基于Java类进行配置的完整步骤 发布于 2020-7-7| 复制链接 基于Java配置选项,可以编写大多数的Spring不用配置XML,下面 前言JavaConfig 原来是 Spr ...

  3. java中配置bean_Spring中基于Java的配置@Configuration和@Bean用法

    Spring中为了减少xml中配置,可以声明一个配置类(例如SpringConfig)来对bean进行配置. 一.首先,需要xml中进行少量的配置来启动Java配置: xmlns:xsi=" ...

  4. spring java配置_Spring基于java的配置

    我们之前都了解过spring基于xml的配置,我们也可以通过配置类来完成基于xml的配置,我们会在下面以一个例子来讲述一下Spring基于java的配置. 首先第一步准备工作: 1)创建一个Dog类 ...

  5. spring中基于XML的AOP配置步骤

    spring中基于XML的AOP配置步骤 IAccountService.java package com.itheima.service;/*** 账户的业务层接口*/ public interfa ...

  6. 使用Spring 3.1和基于Java的配置构建RESTful Web服务,第2部分

    1.概述 本文介绍了如何在Spring中设置REST –控制器和HTTP响应代码,有效负载编组配置和内容协商. 2.在Spring了解REST Spring框架支持两种创建RESTful服务的方式: ...

  7. java为什么引入注解_说说Spring中为何要引入Lookup注解

    前言 我们先探一探官方文档关于Method Injection的章节是怎么说的: In most application scenarios, most beans in the container ...

  8. spring java配置_Spring:使基于Java的配置更加优雅

    spring java配置 大家好,我很久没有写新文章了. 积累了很多资料,需要在不久的将来在我的博客中发布. 但是现在我想谈谈Spring MVC应用程序配置. 确切地说,我想谈谈基于Java的Sp ...

  9. Spring:使基于Java的配置更加优雅

    大家好,我很久没有写新文章了. 积累了很多资料,需要在不久的将来在我的博客中发布. 但是现在我想谈谈Spring MVC应用程序配置. 确切地说,我想谈谈基于Java的Spring配置. 尽管在3.0 ...

最新文章

  1. hdoj1002解题报告
  2. python中align_Python中如何自动化对齐?
  3. 学习 Python 编程的 19 个资源
  4. (需求实战_进阶_02)SSM集成RabbitMQ 关键代码讲解、开发、测试
  5. python 文本相似度现状_python文本相似度分析
  6. matlab imagesc参数设置,[转载]matlab 中imagesc的用法
  7. python在文件中写入字典_python初学--文件操作、字典
  8. JAVA→异常、异常类体系结构、try→catch→finally处理异常、throw new Exception(“重构异常“);、throws Exception{ }、自定义异常
  9. html网页该插件不受支持,该插件不受支持怎么办
  10. 关于邮件模板的兼容性1
  11. 食品药品版本库存管理软件
  12. php学籍信息管理系统心得_php学籍管理系统,源码免费分享
  13. 如何用计算机求矩阵的逆矩阵,逆矩阵的求法
  14. CAD制图快捷键分享,制图之前的基本准备
  15. 零点起飞学HTML+CSS (顼宇峰) PDF扫描版
  16. Excel怎么转换成PDF?这两种转换方法看到就是赚到
  17. 炼数成金Scala语言入门
  18. css 变量_如何将CSS变量用于动画
  19. 解决QQ识图后复制文字然后将其粘贴到文件重命名中,总是显示重命名不成功
  20. 应用检查后台启动权限方法(小米官方给出的)

热门文章

  1. [导入]ASP.NET 配置节架构
  2. 数据库基础知识——存储过程和函数
  3. 安全技术可以采用计算机安全,2017年计算机三级《信息安全技术》习题
  4. php文件锁 阻塞区别,php文件锁阻塞模式和非阻塞模式
  5. java 协议处理器_协议处理器urlstreamhandler及contenthandler
  6. matlab实现脑电信号的相位同步分析,视听刺激脑电信号的相位同步分析
  7. 取一定范围内随机小数 c_算伪随机概率中C值的快捷方法
  8. C++中派生类隐式调用与显式调用基类的构造函数
  9. Django——多个数据库
  10. 粒子群优化算法(Particle Swarm Optimization)的 Matlab(R2018b)代码实现