● 注意:使用注解并不能完全取代xml配置,比如配置连接池DruidDataSource,我们就不能到这个类中去贴注解。
  • 想要实现零配置(完全不使用xml进行配置):javaConfig + 注解

● DI注解:注解配置 <context:congfig-config/>

● IoC注解:组件扫描器 <context:component-scan base-package=""/>

一、通过注解自动装配(比起xml配置的对象类型配置ref,更加推荐使用注解注入

1、 DI 注解:@Autowired、@Resource、@Value

  • value注解的威力: 结合动态properties配置文件引入值变量 @Value("${service.port}")

★ 注入:

  • 常量类型 value Value

  • 对象类型 ref Autowired/Resource

(1)在配置文件中添加注解的解析器的配置:

    <!-- DI注解的解析器 -->
<context:annotation-config/>

(2)使用注解@Autowired

​ □ Autowired 注解寻找 bean 的方式:

​ 1) 首先按照依赖对象的类型找,如果找到,就是用 setter 方法或者字段直接注入;

​ 2)如果在 Spring 上下文中找到多个匹配的类型,再按照名字去找,如果没有匹配报错;

​ 3)可以通过使用 注解@Qualifier("id名字") 来规定依赖对象按照 bean 的 id 和类型的组合方式去找

■ DI注解 Autowired 和 Resource(都需要配置DI注解的解析器):

  • Spring官方是使用:Autowired

  • javaEE规范:Resource 【依赖:javax.annotation-api.jar】

2、IoC 注解:

(1)在配置文件中添加注解的解析器的配置:

   <!-- IoC注解的解析器 -->
<context:component-scan base-package="com.shan.ioc"/>

(2)使用注解@Component 配置Bean

  • @Component 组件若是不写value属性值,此时的bean的id默认是类型首字母小写
// <bean id="dataSource" class="com.shan.ioc.MyDataSource"/>
@Component("dataSource")
public class MyDataSource { }

■ bean 组件版型:四个组件的功能是相同的,只是用于标注不同类型的组件。

@Component 泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

@Repository (持久层)用于标注数据访问组件,即 DAO 组件。

@Service (业务层)用于标注业务层组件。

@Controller (控制层)用于标注控制层组件(如 struts 中的 Ation,SpringMVC 的 Controller)

3、作用域注解、初始化和销毁注解: @Scope、@PostConstruct、@PreDestroy

  • 其中初始化和销毁注解【依赖:javax.annotation-api.jar】

二、通过java代码装配 java-config

学习Spring5必知必会(4)~使用注解配置、使用java代码配置的更多相关文章

  1. [ 学习路线 ] 2015 前端(JS)工程师必知必会 (2)

    http://segmentfault.com/a/1190000002678515?utm_source=Weibo&utm_medium=shareLink&utm_campaig ...

  2. 《SQL必知必会》学习笔记二)

    <SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...

  3. 学习《SQL必知必会(第4版)》中文PDF+英文PDF+代码++福达BenForta(作者)

    不管是数据分析还是Web程序开发,都会接触到数据库,SQL语法简洁,使用方式灵活,功能强大,已经成为当今程序员不可或缺的技能. 推荐学习<SQL必知必会(第4版)>,内容丰富,文字简洁明快 ...

  4. 《MySQL必知必会》学习笔记——前言

    前言 MySQL已经成为世界上最受欢迎的数据库管理系统之一.无论是用在小型开发项目上,还是用来构建那些声名显赫的网站,MySQL都证明了自己是个稳定.可靠.快速.可信的系统,足以胜任任何数据存储业务的 ...

  5. 《SQL必知必会》学习笔记整理

    简介 本笔记目前已包含 <SQL必知必会>中的所有章节. 我在整理笔记时所考虑的是:在笔记记完后,当我需要查找某个知识点时,不需要到书中去找,只需查看笔记即可找到相关知识点.因此在整理笔记 ...

  6. 《SQL必知必会》学习笔记(一)

    这两天看了<SQL必知必会>第四版这本书,并照着书上做了不少实验,也对以前的概念有得新的认识,也发现以前自己有得地方理解错了.我采用的数据库是SQL Server2012.数据库中有一张比 ...

  7. mysql学习--mysql必知必会1

     例如以下为mysql必知必会第九章開始: 正則表達式用于匹配特殊的字符集合.mysql通过where子句对正則表達式提供初步的支持. keywordregexp用来表示后面跟的东西作为正則表達式 ...

  8. mysql学习--mysql必知必会

      上图为数据库操作分类:     下面的操作參考(mysql必知必会) 创建数据库 运行脚本建表: mysql> create database mytest; Query OK, 1 row ...

  9. 数据库学习之中的一个: 在 Oracle sql developer上执行SQL必知必会脚本

    1 首先在開始菜单中打开sql developer: 2. 创建数据库连接 点击左上角的加号 在弹出的对话框中填写username和password 測试假设成功则点击连接,记得角色要写SYSDBA ...

  10. SQL必知必会,带你系统学习

    你一定听说过大名鼎鼎的Oracle.MySQL.MongoDB等,这些数据库都是基于一个语言标准发展起来的,那就是SQL. SQL可以帮我们在日常工作中处理各种数据,如果你是程序员.产品经理或者是运营 ...

随机推荐

  1. winform 中心旋转 图片旋转

    //设置左上角到中心点 g.TranslateTransform(int.Parse(x), int.Parse(y)); //旋转角度 g.RotateTransform(int.Parse(&qu ...

  2. spring 事务传播性

    一.什么是事务传播性 大白话讲就是,方法之间互相调用的时候,事务如何传播,比如A()调用B(),B()的事务是和A()共用一个事务(失败一起提交)? 还是新事务(两者事务互不影响)?,还是说B()不需 ...

  3. luis使用手册

    Luis聊天机器人的使用 首先打开luis官网 图5.1  luis官网界面 图5.2  app应用管理界面 界面显示现有应用,显示它们的名称,语言,日期,以及使用次数.点击创建一个新的app应用. ...

  4. HttpServletResponse接口详解

    在 Servlet API 中,定义了一个 HttpServletResponse 接口,它继承自 ServletResponse 接口.HttpServletResponse 对象专门用来封装 HT ...

  5. MyCms 自媒体 CMS 系统 v2.8,支持织梦数据导入

    MyCms 是一款基于Laravel开发的开源免费的自媒体博客CMS系统,助力开发者知识技能变现. MyCms 基于Apache2.0开源协议发布,免费且不限制商业使用,欢迎持续关注我们. V2.8 ...

  6. http中的8种请求介绍

    HTTP协议的8种请求类型介绍 HTTP协议中共定义了八种方法或者叫"动作"来表明对Request-URI指定的资源的不同操作方式,具体介绍如下: OPTIONS:返回服务器针对特 ...

  7. list概述

    1.list概述 list 是一种双向链表.list 的设计更加复杂一点,好处是每次插入或删除一个元素,就配置或释放一个元素,list 对于空间的运用有绝对的精准,一点也不浪费.而且对于任何位置的元素 ...

  8. Programiz 中文系列教程·翻译完成

    原文:Programiz 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN 学习资源 目录 Programiz C ...

  9. Git分支基本操作

    感谢廖雪峰老师,以下教程均来自廖雪峰老师的博客,地址:https://www.liaoxuefeng.com/wiki/896043488029600/900003767775424 基本原理 在版本 ...

  10. JAVA boolean 类型

    boolean 类型用来存储布尔值,在java中布尔值只有2个,true和false. boolean flag=true; flag=false;