spring中基于Java容器配置注解的区别及使用场景
转载自百家号作者:有趣的代码
@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容器配置注解的区别及使用场景相关推荐
- Spring中基于Java的配置@Configuration和@Bean用法
spring中为了减少xml中配置,可以生命一个配置类(例如SpringConfig)来对bean进行配置. 一.首先,需要xml中进行少量的配置来启动Java配置: [java] view plai ...
- spring 加载java类_在Spring中基于Java类进行配置的完整步骤
在Spring中基于Java类进行配置的完整步骤 发布于 2020-7-7| 复制链接 基于Java配置选项,可以编写大多数的Spring不用配置XML,下面 前言JavaConfig 原来是 Spr ...
- java中配置bean_Spring中基于Java的配置@Configuration和@Bean用法
Spring中为了减少xml中配置,可以声明一个配置类(例如SpringConfig)来对bean进行配置. 一.首先,需要xml中进行少量的配置来启动Java配置: xmlns:xsi=" ...
- spring java配置_Spring基于java的配置
我们之前都了解过spring基于xml的配置,我们也可以通过配置类来完成基于xml的配置,我们会在下面以一个例子来讲述一下Spring基于java的配置. 首先第一步准备工作: 1)创建一个Dog类 ...
- spring中基于XML的AOP配置步骤
spring中基于XML的AOP配置步骤 IAccountService.java package com.itheima.service;/*** 账户的业务层接口*/ public interfa ...
- 使用Spring 3.1和基于Java的配置构建RESTful Web服务,第2部分
1.概述 本文介绍了如何在Spring中设置REST –控制器和HTTP响应代码,有效负载编组配置和内容协商. 2.在Spring了解REST Spring框架支持两种创建RESTful服务的方式: ...
- java为什么引入注解_说说Spring中为何要引入Lookup注解
前言 我们先探一探官方文档关于Method Injection的章节是怎么说的: In most application scenarios, most beans in the container ...
- spring java配置_Spring:使基于Java的配置更加优雅
spring java配置 大家好,我很久没有写新文章了. 积累了很多资料,需要在不久的将来在我的博客中发布. 但是现在我想谈谈Spring MVC应用程序配置. 确切地说,我想谈谈基于Java的Sp ...
- Spring:使基于Java的配置更加优雅
大家好,我很久没有写新文章了. 积累了很多资料,需要在不久的将来在我的博客中发布. 但是现在我想谈谈Spring MVC应用程序配置. 确切地说,我想谈谈基于Java的Spring配置. 尽管在3.0 ...
最新文章
- hdoj1002解题报告
- python中align_Python中如何自动化对齐?
- 学习 Python 编程的 19 个资源
- (需求实战_进阶_02)SSM集成RabbitMQ 关键代码讲解、开发、测试
- python 文本相似度现状_python文本相似度分析
- matlab imagesc参数设置,[转载]matlab 中imagesc的用法
- python在文件中写入字典_python初学--文件操作、字典
- JAVA→异常、异常类体系结构、try→catch→finally处理异常、throw new Exception(“重构异常“);、throws Exception{ }、自定义异常
- html网页该插件不受支持,该插件不受支持怎么办
- 关于邮件模板的兼容性1
- 食品药品版本库存管理软件
- php学籍信息管理系统心得_php学籍管理系统,源码免费分享
- 如何用计算机求矩阵的逆矩阵,逆矩阵的求法
- CAD制图快捷键分享,制图之前的基本准备
- 零点起飞学HTML+CSS (顼宇峰) PDF扫描版
- Excel怎么转换成PDF?这两种转换方法看到就是赚到
- 炼数成金Scala语言入门
- css 变量_如何将CSS变量用于动画
- 解决QQ识图后复制文字然后将其粘贴到文件重命名中,总是显示重命名不成功
- 应用检查后台启动权限方法(小米官方给出的)
热门文章
- [导入]ASP.NET 配置节架构
- 数据库基础知识——存储过程和函数
- 安全技术可以采用计算机安全,2017年计算机三级《信息安全技术》习题
- php文件锁 阻塞区别,php文件锁阻塞模式和非阻塞模式
- java 协议处理器_协议处理器urlstreamhandler及contenthandler
- matlab实现脑电信号的相位同步分析,视听刺激脑电信号的相位同步分析
- 取一定范围内随机小数 c_算伪随机概率中C值的快捷方法
- C++中派生类隐式调用与显式调用基类的构造函数
- Django——多个数据库
- 粒子群优化算法(Particle Swarm Optimization)的 Matlab(R2018b)代码实现