Spring @Configuration注解及配置方法 转自:https://www.jb51.net/article/184822.htm

Spring @Configuration注解

Spring3.0开始,@Configuration用于定义配置类,定义的配置类可以替换xml文件,一般和@Bean注解联合使用。

@Configuration注解主要标注在某个类上,相当于xml配置文件中的<beans>

@Bean注解主要标注在某个方法上,相当于xml配置文件中的<bean>

注意:@Configuration注解的配置类有如下要求:

  1. @Configuration不可以是final类型;
  2. @Configuration不可以是匿名类;
  3. 嵌套的configuration必须是静态类。

Configuration里面有一个component组件来标识,说明此类也是一个bean,可以被调用,来看看哪些主要的注解含有component:

Annotation 的装配 Spring 中,尽管使用 XML 配置文件可以实现 Bean 的装配工作,但如果应用中有很多 Bean 时,

会导致 XML 配置文件过于靡肿,给后续的维护和升级工作带来一定的困难

为此,Spring 提供了对 Annotation (注解)技术的全面支持 Spring 中定义了一系列的注解,常用的注解如下所示:

  • @Component: 可以使用此注解描述 Spring 中的 Bean ,但它是一个泛化的概念,仅仅表 示一个组件 (Bean ,并且可以作用在任何层次 使用时只需将该注解标注在相应类上即可
  • @Repository: 用于将数据访问层( DAO 层)的类标识为 Spring 中的 Bean ,其功能与 @Component 相同
  • @Service: 通常作用在业务层( Service ,用于将业务层的类标识为 Spring 中的 Bean 其功能与@Component 相同
  • @Controller: 通常作用在控制层(如 Spring MVC Controller ,用于将控制层的类标识 Spring 中的 Bean ,其功能与@Component 相同
  • @Autowired: 用于对 Bean 的属性变量、属性的 setter 方法及构造方法进行标注,配合对 应的注解处理器完成 Bean 的自动配置工作 默认按照 Bean 的类型进行装配
  • @Resource: 其作用与 Autowired 一样

[区别] -- @Autowired 默认按照 Bean 类型装 配,而@Resource 默认按照 Bean 实例名称进行装配。

@Resource 中有两个重要属性:name和type

  Spring将name属性解析为Bean实例名称,type属性解析为Bean实例类型,如果指定name属性,贝IJ 按实例名称进行装配;如果指定 type 属性,则按 Bean 类型进行装配;如 果都不指定,则先按 Bean 实例名称装配,如果不能匹配,再按照 Bean 类型进行装自己;如果都 无法匹配,则抛出 NoSuchBeanDefinitionException 异常。

@Qualifier:

  与@Autowired 注解配合使用,会将默认的按Bean类型装配修改为接 Bean 的实例名称装配,Bean的实例名称由 @Qualifier 注解的参数指定 在上面几个注解中,虽然@Repository @Service @Controller 功能与@Component 注解 的功能相同,但为了使标注类本身用途更加清晰,建议在实际开发中使用@Repository @Service @Controller 分别对实现类进行标注下面。

Java随手记录的更多相关文章

  1. Java 日志记录规则

    Java 日志记录规则 规则一:日志是面向读者的 我们不应该让无价值的信息使日志文件变得乱糟糟,比如说完整打印所有的实体字段. 通常,实体名字和其逻辑关键字足以识别在表格中的一条记录了. 规则二:匹配 ...

  2. 补充Java面试记录

    补充Java面试记录 背景:这两天面试遇到的部分问题都分散在了前面两篇文摘中,这里再做一些其他的记录,以备不时之需! 一.谈谈你对SpringBoot的理解? SpringBoot简介:SpringB ...

  3. Java问题记录——循环里的二次判断与状态更新

    Java问题记录——循环里的二次判断与状态更新 摘要:本文主要记录了在循环操作时可能出现的问题. 问题重现 在使用循环结构时,如果使用了定时任务,或者代码会多次调用循环结构,可能会导致有些对象会被循环 ...

  4. Java问题记录——OutOfMemoryError

    Java问题记录——OutOfMemoryError 摘要:本文主要分析了OutOfMemoryError的产生原因. 没有分页导致占用大量内存 查看进程 使用 jps 命令查看当前运行的Java进程 ...

  5. Java问题记录——IllegalMonitorStateException

    Java问题记录——IllegalMonitorStateException 摘要:本文主要分析了IllegalMonitorStateException的产生原因. 部分内容来自以下博客: http ...

  6. SLF4J (The Simple Logging Facade for Java)使用记录

    SLF4J (The Simple Logging Facade for Java)使用记录 官网 http://www.slf4j.org/ 参考资料 官方文档 什么是 SLF4J? 官网: The ...

  7. 【Java】记录一次代码优化

    前不久的项目时间紧张,为了尽快完成原型开发,写了一段效率相当低的代码. 最近几天闲下来,主动把之前的代码优化了一下:)   标签:Java.Mybatis.MySQL 概况:本地系统从另外一个系统得到 ...

  8. 普华永道高级JAVA面试记录

    最近在考虑换个工作 原因?咱能不逗吗? 一面感觉发挥不错  二面之后累觉不爱  基本上浪费了半天的工资(好多钱啊~~~) PWD上海地址在浦东软件园  工作环境说实话没我现在工作的环境好,不过里面的人 ...

  9. Java学习笔记(十九)——Java 日志记录 AND log4j

    [前面的话] 学习的进度应该稍微在快一点. Java日志到了必须学习怎么使用的时候了,因为在项目中要进行使用.基础性文章,选择性阅读. [结构] java日志对调试,记录运行,问题定位都起到了很重要的 ...

随机推荐

  1. 自定义注解@MyBatisRepository

    新建一个注解用作dao扫描 /** * @author fuguangli * @description 标识MyBatis的DAO,方便{@link org.mybatis.spring.mappe ...

  2. React组件三大属性之 refs

    React组件三大属性之 refs refs属性 1) 组件内的标签都可以定义ref属性来标识自己 a. <input type="text" ref={input => ...

  3. github在不同电脑上协同开发

    当我换了电脑后,开发自己的github项目遇到了一些问题. 首先,git clone 'repository url'拉取下来项目,开始开发项目发.修改了一些文件后,当要git commit, git ...

  4. robotframework - PO设计

    1.添加新建好的资源 2.测试用例原始代码如下(未做任何分离的数据) *** Settings ***Library SeleniumLibraryResource UI分层一.txtResource ...

  5. 使用JavaMailSender 发送邮件

    使用JavaMailSender 发送邮件 package com.juvenxu.mvnbook.account.email; import javax.mail.MessagingExceptio ...

  6. iOS实现常用地图坐标系转换(swift5)

    // 桥接后,OC工程也可用 // HTMCoorTransform.swift // HTMapKit // // Created by LongMa on 2021/8/3. // import ...

  7. VS Code的插件安装位置改变

    VS Code的相关配置 VS Code的插件安装位置改变 可以通过创建连接,将默认的extensions位置,改变到D盘 Windows 链接彻底解决 vscode插件安装位置问题 mklink / ...

  8. 使用策略者模式减少switch case 语句

    策略者模式 很简单的一个定义:抽象策略(Strategy)类:定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,环境角色使用这个接口调用不同的算法,一般使用接口或抽象类实现. 场景 在这之前 ...

  9. java小程序之随机任务发布器

    需求 自定义任务 随机定时 随机排序 集合输出 搭建 简单项目,所以我使用java 的maven来搭建一个控制台程序,并且使用excel来记录任务 创建任务类(sub) package com.mic ...

  10. docker版LAMP(PHP+MYSQL+APACHE)配置

    最近在搭测试环境,一开始就在vagant和docker之间来回折腾.两者其实都非常适合用来搭开发环境:但最终让我决定用Docker的原因是因为Vagant在hyper-v下出现了一些奇怪的问题,所以D ...