1. 一、Spring Ioc容器详解(1 20131105
  2. 1.一切都是Bean
  3. Bean可是一个字符串或者是数字,一般是一些业务组件.
  4. 粒度一般比较粗.
  5. 2.Bean的名称
  6. xml配置文件中,id属性可以检测是否唯一。name是可以重复的。
  7. 一个bean的实现可以有多个名字,别名
  8. <alias name="p3" alias="p4"/>
  9.  
  10. 3.Spring 容器的初始化过程(不同的实现有不同的过程)
  11. A、根据加载的配置文件信息注解Bean的信息(BeanDefinition)到Bean工厂
  12. B、根据得到的Beandefintion对象来确定要不要初始化一些Bean
  13. C、处理依赖注入(根据BeanDefintion 中有关依赖注入的信息)
  14. D、客户端通过容器来查询业务组件
  15. E、当容器关闭的时候,销毁
  16.  
  17. 4.Bean工厂及应用上下文
  18. ABeanFactory--Spring最基本的容器接口
  19. getBean(String)
  20. getBean(String, Class<T>) ==获得指定类型的bean,如果符合条件的
  21. 所谓单例,是说容器只需要创建一次
  22. containsBean(String)
  23.  
  24. isSingleton(String)
  25.  
  26. boolean isPrototype(String name)
  27.  
  28. BApplicationContext--应用层面容器(提供访问环境资源信息的相关方法)
  29.  
  30. ApplicationContext getParent();表现了一种树状结构。
  31.  
  32. applicationContext会在初始化时自动加载单例Bean
  33. beanFactory只有在用的时候才会初始化
  34.  
  35. 5.三种实例化bean的方式
  36. A.通过构造函数
  37. 默认的无参的构造函数
  38.  
  39. 通过带一个参数的进行初始化
  40. public Person(String name) {
  41. super();
  42. System.out.println("初始化Person!传进来姓名参数!");
  43. this.name = name;
  44. }
  45.  
  46. B 使用静态工厂
  47.  
  48. <!-- 使用静态工厂方法 进行初始化 -->
  49. <bean id="p3" class="com.lspring.springIoc.PersonFactory"
  50. factory-method="createPerson"></bean>
  51. <!-- 使用带参数的静态工厂方法创建bean -->
  52. <bean id="p4" class="com.lspring.springIoc.PersonFactory"
  53. factory-method="createPerson">
  54. <constructor-arg value="五笔输入法"></constructor-arg>
  55. </bean>
  56.  
  57. public static Person createPerson(){
  58. System.out.println("通过静态工厂实例化bean!");
  59. return new Person();
  60. }
  61.  
  62. public static Person createPerson(String name){
  63. System.out.println("通过静态工厂实例化bean!"+name);
  64. return new Person(name);
  65. }
  66.  
  67. C 使用动态工厂
  68.  
  69. <!-- 使用动态工厂方法 进行初始化 -->
  70. <!-- 先定义一个工厂 -->
  71. <bean id="factoryBean" class="com.lspring.springIoc.PersonFactoryFamily">
  72. <property name="family" value="王"></property>
  73. </bean>
  74. <bean id="p5" factory-bean="factoryBean" factory-method="createPerson">
  75. <constructor-arg value="小二"></constructor-arg>
  76. </bean>
  77. <bean id="p6" factory-bean="factoryBean" factory-method="createPerson">
  78. </bean>
  79.  
  80. private String family;
  81.  
  82. public String getFamily() {
  83. return family;
  84. }
  85.  
  86. public void setFamily(String family) {
  87. this.family = family;
  88. }
  89.  
  90. public Person createPerson(){
  91. System.out.println("通过静态工厂实例化bean!");
  92. return new Person(family+"");
  93. }
  94.  
  95. public Person createPerson(String name){
  96. System.out.println("通过静态工厂实例化bean!"+name);
  97. return new Person(family+":"+name);
  98. }
  99.  
  100. 6.Bean的作用域
  101. spring3以后默认提供了5
  102. (1).singleton(默认值)
  103. 在每个spring ioc容器中一个bean定义只有一个对象实例(共享)
  104. 默认情况下会在容器启动时初始化bean,但我们可以指定Bean节点的lazy-int='true'来延迟初始化bean,这时候,只有第一次获取bean才会初始化bean.如:
  105. <bean id="xxxx" class="com.lspring..." lazy-init="true"/>
  106. 如果相对所有的bean都应用延迟初始化,可以在根节点beans设置default-lazy-init="true",如下:《beans default-lazy-init="true"..》
  107.  
  108. (2).prototype
  109. 允许bean可以被多次实例化(使用一次就创建一个实例
  110. (3).reuqest
  111. (4).session
  112. (5).global session(Portlet规范将portlet定义为一种基于java技术的webx组件,由处理请求和生成动动态内容的portlet容器管理")
  113.  
  114. A.singleton--单例 一个类只有一次初始化,因为第一次加载时就放入内存中去了。。
  115.  
  116. B.prototype--多例(原型),每次从要从容器取该Bean时,均重新创建一次。
  117. <constructor-arg value="fff"></constructor-arg>
  118. C.request--生存期在一次请求内有效,必须在web应用中才能用.
  119.  
  120. D.session---生存期在一次会话内有效,必须在web应用中才能用.购物车bean.
  121.  
  122. E.global session,portlet环境应用中才有效
  123.  
  124. 7.指定bean的初始化方法和销毁方法
  125. <bean id="personDao" class="com.lspring..." init-method="init" destroy-method="close" >
  126. <property name="timeout" value="10000"></property></bean>
  127. 8.加载多个配置文件
  128. <bean>
  129. <import reource="bean-scope.xml"/>
  130. <import resource="beans-init.xml"/>
  131. </beans>
  132. 五。Spring ioc容器详解(2)
  133. 1.spring容器中的依赖注入概述
  134. 类型:使用构造器注入/使用属性setter方法注入/使用field注入(用于注解方式)
  135. <!-- 使用setter注入 -->
  136. public Integer getAge() {
  137. return age;
  138. }
  139. <bean id="p1" class="com.lspring.springIoc.Person">
  140. <property name="name" value="TOM"></property>
  141. <property name="age" value ="18"></property>
  142. </bean>
  143.  
  144. <!-- 构造子注入 -->
  145. public Person(String name, Integer age) {
  146. super();
  147. System.out.println("构造子注入!");
  148. this.name = name;
  149. this.age = age;
  150. }
  151. <bean id="p2" class="com.lspring.springIoc.Person">
  152. <constructor-arg value="Jerry"></constructor-arg>
  153. <constructor-arg value="20"> </constructor-arg>
  154. </bean>
  155. <!-- 对于 一些有歧义的可能有几个构造函数与下面的参数匹配时, 可以通过指定type进行区分 -->
  156. <bean id="p3" class="com.lspring.springIoc.Person">
  157. <constructor-arg index="1" type="java.lang.Integer"
  158. value="20">
  159. </constructor-arg>
  160. <constructor-arg index="0" value="33"></constructor-arg>
  161. </bean>
  162. C、字段注入
  163. 需要在配置文件在配置context命名空间,指定容器去扫描Bean中的注解
  164. private String name;
  165. private Integer age;
  166. @Autowired
  167. private String Mytel;
  168.  
  169. <beans xmlns="http://www.springframework.org/schema/beans"
  170. xmlns:context="http://www.springframework.org/schema/context"
  171. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  172. xsi:schemaLocation="http://www.springframework.org/schema/beans
  173. http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
  174. http://www.springframework.org/schema/context
  175. http://www.springframework.org/schema/context/spring-context-3.2.xsd"
  176. >
  177. <!-- 启动注解扫描功能,有的配置是在注解-->
  178. <context:annotation-config></context:annotation-config>
  179. <!-- 配置一个字段注入 -->
  180. <bean id="Mytel" class="java.lang.String">
  181. <constructor-arg value="11113333"></constructor-arg>
  182.  
  183. 2.装配的类型:手动装配还是自动装配

[Spring学习笔记 1 ] Spring 简介,初步知识--Ioc容器详解 基本原理。的更多相关文章

  1. Spring学习笔记--环境搭建和初步理解IOC

    Spring框架是一个轻量级的框架,不依赖容器就能够运行,像重量级的框架EJB框架就必须运行在JBoss等支持EJB的容器中,核心思想是IOC,AOP,Spring能够协同Struts,hiberna ...

  2. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78516 ...

  3. spring学习笔记(一) Spring概述

    博主Spring学习笔记整理大部分内容来自Spring实战(第四版)这本书.  强烈建议新手购入或者需要电子书的留言. 在学习Spring之前,我们要了解这么几个问题:什么是Spring?Spring ...

  4. Java架构师之路 Spring学习笔记(一) Spring介绍

    前言 这是一篇原创的Spring学习笔记.主要记录我学习Spring4.0的过程.本人有四年的Java Web开发经验,最近在面试中遇到面试官总会问一些简单但我不会的Java问题,让我觉得有必要重新审 ...

  5. Spring学习笔记2:Spring HelloWorld

    1:IntelliJ新建Maven工程 2:pom文件加入Spring依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" ...

  6. [Spring学习笔记 5 ] Spring AOP 详解1

    知识点回顾:一.IOC容器---DI依赖注入:setter注入(属性注入)/构造子注入/字段注入(注解 )/接口注入 out Spring IOC容器的使用: A.完全使用XML文件来配置容器所要管理 ...

  7. Spring学习笔记:Spring概述,第一个IoC依赖注入案例

    一.Spring的优点 企业及系统: 1.大规模:用户数量多.数据规模大.功能众多 2.性能和安全要求高 3.业务复杂 4.灵活应变 Java技术:高入侵式依赖EJB技术框架-->Spring框 ...

  8. 1.1(Spring学习笔记)Spring基础(BeanFactory、ApplicationContext 、依赖注入)

    1.准备工作 下载Spring:http://repo.spring.io/libs-release-local/org/springframework/spring/    选择需要下载的版本    ...

  9. Spring 学习笔记(2) Spring Bean

    一.IoC 容器 IoC 容器是 Spring 的核心,Spring 通过 IoC 容器来管理对象的实例化和初始化(这些对象就是 Spring Bean),以及对象从创建到销毁的整个生命周期.也就是管 ...

随机推荐

  1. python2.7 调用 .net的webservice asmx

    首先安装pip install suds 或下载:https://pypi.org/project/suds-jurko/0.6/#files 这个是最新版本 由于不支持python3.6, 所以只能 ...

  2. 介绍一些有趣的MySQL pager命令

    一.分页结果集 在Linux系统中中,我们经常也会使用一些分页查看命令,例如less.more等.同样,MySQL客户端也提供了类似的命令,用来帮助我们对查询结果集进行分页.比如,SHOW ENGIN ...

  3. 文字编码和Unicode

    文字编码和Unicode 说明文字: https://blog.csdn.net/fengzhishang2019/article/details/7859064 Java 程序: https://w ...

  4. 转: git使用时让http记住帐号密码

    见 http://git.mydoc.io/?t=154710 https 方式每次都要输入密码,按照如下设置即可输入一次就不用再手输入密码的困扰而且又享受 https 带来的极速 按照以下设置记住密 ...

  5. HttpWebRequest抓取网页数据返回异常:远程服务器返回错误: (503) 服务器不可用

      解决方法:   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(webURL);                //声明一个H ...

  6. VC++导出具有命名空间的函数

    问题现象 原因分析 解决的方法 1 问题现象 导出具有命名空间的函数和类.源码例如以下: 头文件MiniMFC.h namespace MiniMFC { __declspec(dllexport) ...

  7. 创建mysql数据库并指定编码

    xplanner的readme.txt里有句话“XPlanner has only been tested on mysql 4.x, myslq 5.0, Tomcat 5.x, java 1.4, ...

  8. 视频播放代码 crastr3

    下载:http://down.51cto.com/data/1904974 代码(亲测): <html xmlns="http://www.w3.org/1999/xhtml" ...

  9. 使用Visual Studio Code调试React Native报错

    报错信息: [Error] Error: Unknown error: not all success patterns were matched. It means that "react ...

  10. LintCode: Convert Sorted Array to Binary Search Tree With Minimal Height

    C++ /** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; ...