原文地址:http://github.thinkingbar.com/spring/

一、XML文件语法的知识点

对于XML没有提示的话,在Eclipse中搜索XML catalog设置。对于XML文件来说,xsd是规定XML的语法。我们来看一个例子:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> </beans>

这里面首先是XML的版本,然后是XML的编码方式(如果有乱码,说明Eclipse的编码不对)。接下来是关键:

xmlns中的ns是namespace,和C++相同,是代表变量在某个命名空间中的可以使用的语法。xmlns:xsi代表是以csi开头 的命名空间的可以使用的语法。xsi:schemaLocation是这些命名空间存在的物理位置。拿第一个为例子,没有前缀的标签的命名空间是 http://www.springframework.org/schema/beans,它的物理位置是xsi:schemaLocation的第一 对,key为http://www.springframework.org/schema/beans,它的值(也就是实际存放的位置为)http: //www.springframework.org/schema/beans/spring-beans-3.0.xsd。这样,如果你使用没有前缀 的标签时,XML文件会知道这是一个没有前缀的bean,我需要找个xmlns这个命名空间,然后去找这个文件里面的语法规则。那么,它根据key找到物 理地址是那个在网站上的xsd文件,如果你写的语法规则符合xsd文件,就不会报错;反之会出现红色标记。

如果你是在本地的话,一般也是这样配置的,但是在本地的话,我们可以把xsd文件down到本地的目录中,这样查询语法就在本地进行。所以这就是XML catalog的用处。至于设置的内容,只要把上面那个东西搞清楚了,分分钟秒杀之。

二、加入javadoc

在jar包上右键点击javadoc Location,然后添加进去。然后F1可以查看了。

三、Spring知识点

1. 注入类型

Spring的注入类型有三种,分别为:

  • set注入(important)
  • 构造方法注入
  • 接口注入

但是后两种基本用不到,只需要记住set的原理即可。加入要进行set注入的属性名称为userInfo,那么Spring会调用bean的setUserInfo方法进行注入。这个方法虽然土,但是是业界标准。尽量不要违反。

2. Spring可以注入构造函数(很少用)

如果多个参数,可以使用index或者type:

  • index:index = “0”,然后指定参数位置为0的值;index = “1”,然后指定参数位置为1的值。func(int a, int b),那么a就是index0,b就是index1
  • type:type=”int”, type=”java.lang.String”。和上面类似

3. bean的标识符id VS name

bean的id或者name都可以,但是name可以有特殊字符。一般均使用id

4. <bean 的scope属性

可以在bean中指定scope(范围):

  • singleton:单例模式,scope为singleton(单例模式),就是这个属性无论被拿出来几次,都是同一个对象
  • prototype(原型):每次拿spring会根据这个原型创建一个新的对象,所以拿出来的每个都是全新的、不同的对象

5. autowire自动装配

对于自动装配来说,前2种是经常使用的:

  • byName是在bean中找到和属性名称完全相同的bean进行注入
  • byType是找到和属性类型完全一致的bean进行注入(如果存在多个可能要报错的)
  • default的使用中定义的装配方式```default-autowire="byName"```

6. lazy-init

lazy-init是在bean被get的时候才会初始化

7. @Autowired注解

@Autowired默认是byType的,如果有多个相同name的bean,就需要使用@Qualifier(“name1”)来指定使用name1的bean

8. @Resource和@Component注解

在注解上,主要使用的就是@Resource和@Component,@Autowired则不太常用。

  • @Resource是j2ee的特性,如果要使用,就需要加入j2ee/common-annotation.jar包才能使用。默认按照byName注入,不存在则进行byType注入。当然,也可以使用特定名称,比如@Resource(name="name1")
  • @Commopent的加入,使得不需要将将java bean配置再xml中。对于一个bean,我在类前面加上@Component,就会生成一个对象注入到容器中,后面使用的时候直接就可以用了。避免了在xml中配置的麻烦。只需要在xml中加入context:component-scan base-package="com.sina" />即可。它会扫描com.sina包下面的所有类,遇到component就会初始化一个对象加入到容器中,当别的类使用@Resource的时候,就会调用对应的组件。建议每个组件均使用首字母小写的类名作为标识

使用的过程可以简单总结一下:

  1. ClassPathXmlApplicationContext加载beans.xml
  2. 发现有<context:component-scan base-package="com.sina" />这句话,它就会初始化Spring对应的功能类扫描com.sina下面的类,如果发现有类被标识@Component,就把这个类的对象实例加入到容器中(默认是类名首字母小写作为key,也可以自己指定key)
  3. 等到@Resource用到的时候,就会从容器中拿到@Component放入的那个对象实例

9. others

  • @Scope就是在bean的配置中改为注解,singleton为单例模式,prototype为原型模式
  • @PostConstruct = init-method,@PreDestory = destroy-method

【转】Spring_IOC学习的更多相关文章

  1. Spring_IoC注解开发和AOP的XML开发(学习笔记2)

    一:IoC注解开发 1,在applicationContext.xml中需要引入context约束 <beans xmlns="http://www.springframework.o ...

  2. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  3. Angular2学习笔记(1)

    Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...

  4. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  5. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  6. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  7. Unity3d学习 制作地形

    这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...

  8. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  9. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

随机推荐

  1. Vue3 封装第三方组件(一)做一个合格的传声筒

    各种UI库的功能都是非常强大的,尤其对于我这种不会 css 的人来说,就更是帮了大忙了. 只是嘛,如果再封装一下的话,那么用起来就会更方便了. 那么如何封装呢? 封装三要素 -- 属性.插槽.事件.方 ...

  2. JavaWeb 补充(Json)

    HTML DOM alert() 方法 定义和用法 alert() 方法用于显示带有一条指定消息和一个 OK 按钮的警告框. 参数 描述 message 要在 window 上弹出的对话框中显示的纯文 ...

  3. 设计原则:里式替换原则(LSP)

    系列文章 设计原则:单一职责(SRP) 设计原则:开闭原则(OCP) 设计原则:里式替换原则(LSP) 设计原则:接口隔离原则(ISP) 设计原则:依赖倒置原则(DIP) 何谓高质量代码? 理解RES ...

  4. Tony老师带你来看Java设计模式:代理模式

    目录 定义 作用 意图 主要解决问题 优缺点 与装饰者模式的区别 结构 从Tony老师来看实现方式 静态代理 动态代理 JDK动态代理的实现 cglib动态代理的实现 定义 为其他对象提供一种代理来控 ...

  5. Dubbo学习笔记(二) Dubbo的基本配置

    Check启动检查 根据之前的学习,我们简单理解的Dubbo远程调用的基本流程,服务提供者注册到注册中心,然后服务消费者通过监听注册中心达到远程调用的目的,那么如果注册中心中没有消费者对应的接口会怎么 ...

  6. 基于vite2+electron12后台管理模板|Electron后台框架系统

    前一溜时间有给大家分享一个 electron+vite跨端短视频 项目.这次分享的是vite2.x和electron实现跨平台后台框架,支持国际化多语言配置.导航菜单+树形菜单两种路由菜单模式.展开/ ...

  7. ASP.NET Core 存储session取不到值

    该项目是一个mvc项目,我使用session存储登录后的用户信息,然后发现登录信息存储到session正常,这个时候立马去获取也正常 但是如果我跳转到首页后,再去获取session信息,发现sessi ...

  8. 4-1 Postman脚本的应用

    前面我们讲解了在接口发送每个请求,得到响应.这是接口本身的问题.但是"请求前后"的动作,是怎么处理的?比如在发送一个请求前,需要获取当前的时间戳,或者对我们的变量进行参数化,设置变 ...

  9. 病毒木马查杀实战第012篇:QQ盗号木马之逆向分析

    前言 在本系列的文章中,对每一个病毒分析的最后一个部分,若无特殊情况,我都会采用逆向分析的手段来为读者彻底剖析目标病毒.但是之前的"熊猫烧香"病毒,我用了三篇文章的篇幅(每篇250 ...

  10. hdu3768 spfa+全排列

    题意:       给你一个无向图,和一些必须经过的点,问你从起点出发,到达所有必须经过的点再回来的最小总路径. 思路:       因为必须经过的点的数量很小,小于等于10,全排列是 10! = 3 ...