本文章用于总结自己学习知识,有不足或错误之处清谅解。
bean.xml 文件的读取方式:
  ClassPathXmlApplicationContext: 它是只能加载类路径下的配置文件 推荐
    1.加载配置文件:
      ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
    2.根据bean的id获取对象
      ICustomerService cs1 = (ICustomerService) ac.getBean("customerService");
  FileSystemXmlApplicationContext: 它是可以加载磁盘任意位置的配置文件
 Bean创建的两种规则:
  BeanFactory:
提供的是一种延迟加载思想来创建bean对象。即:bean对象什么时候用,什么时候创建
    ApplicationContext:
提供的是一种立即加载思想来创建bean对象。即:只要一解析完配置文件,就创建bean对象
      1.获取容器
      ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
      2.根据bean的id获取对象
      ICustomerService cs1 = (ICustomerService) ac.getBean("customerService");
      cs1.saveCustomer();
 Bean的作用范围:
它是可以通过配置的方式来调整作用范围
配置的属性:bean标签的scope属性
取值:
singleton :单例的(默认值)
prototype :多例的(当我们让spring接管struts2的action创建时,action必须配置此值)
request :作用范围是一次请求,和当前请求的转发
session :作用范围是一次会话
globalsession :作用范围是一次全局会话
Bean的生命周期:
设计bean标签的两个属性:
init-method
destroy-method
单例:
出生:容器创建,对象出生
活着:只要容器在,对象就在
死亡:容器销毁,对象消亡
多例:
出生:每次使用时,创建对象
活着:只要对象在使用中,就一直活着
死亡:当对象长时间不使用,并且也没有别的对象引用时,由java的垃圾回收器回收
 Bean的三种创建方式:
第一种方式:调用默认无参构造函数创建 常用
默认情况下,如果没有默认无参构造函数,则创建失败,会报异常     bean.xml中配置:
  <bean id="customerService" class="spring.service.impl.CustomerServiceImpl"></bean>
  第二种方式:使用静态工厂中的方法创建对象
需要使用bean标签的factory-method属性,指定静态工厂中创建对象的方法
    配置使用静态工厂创建bean对象
使用class中的factory-method创建对象,用id来提取     bean.xml中配置:
      <bean id="staticCustomerService" class="spring.factory.staticFactory" factory-method="getCustomerService"></bean>
    staticFactory.java中配置:
      public static ICustomerService getCustomerService(){ return new CustomerServiceImpl();
  第三种方式:使用示例工厂中的方法创建.
    需要使用bean标签的factory-method属性,指定示例工厂中创建对象的方法
配置使用实例工厂创建bean对象
    bean.xml中配置:
  <bean id="instanceFactory" class="spring.factory.instanceFactory"></bean>
  <bean id="instanceCustomerService" class="spring.factory.instanceFactory" factory-method="getCustomerService"></bean>    instanceFactory.java中配置:
      public static ICustomerService getCustomerService(){ return new CustomerServiceImpl(); }
 Spring的依赖注入方式:
  注入的方式有三种:
    第一种:使用构造函数注入
    第二种:使用set方法注入
    第三种:使用注解注入   使用构造函数注入:
    涉及的标签:constructor-arg
    标签的属性:
   type: 指定参数的类型
   index: 指定参数的索引位置,从0开始
   name: 指定参数的名称 (常用)
   ========上面三个属性是指定给哪个参数赋值的,下面两个属性是指定赋什么值的========
   value: 指定基本数据类型或String类型的数据
   ref: 指定其他bean类型数据
    标签出现的位置:bean标签内部
    
    bean.xml中的配置:
      <bean id="customerService" class="spring.service.impl.CustomerServiceImpl">
       <constructor-arg name="driver" value="com.mysql.jdbc.Driver"></constructor-arg>
       <constructor-arg name="port" value="3306"></constructor-arg>
      <constructor-arg name="today" ref="now"></constructor-arg>
      </bean>
      由于上文的配置使用了ref,所以需要在bean.xml中配置ref所用的类型:
      <bean id="now" class="java.util.Date"></bean>
  使用set方法注入:
    涉及的标签:property
    标签的属性:
   name: 指定参数的set方法名称
   value: 指定基本数据类型或String类型的数据
   ref: 指定其他bean类型数据
    标签出现的位置:bean标签内部
    注意:使用set方法注入需要注入的目标拥有set方法,否则配置会出现错误。(spring注入错误可以先检查这里)
    
    bean.xml中文件配置:
    <bean id="customerService" class="spring.service.impl.CustomerServiceImpl">
     <property name="driver" value="com.mysql.jdbc.Driver"></property>
     <property name="port" value="3307"></property>
     <property name="today" ref="now"></property>
    </bean>
    <bean id="now" class="java.util.Date"></bean>     CustomerServiceImpl.java中需要有:
    public void setDriver(String driver) { this.driver = driver; }
    public void setPort(Integer port) { this.port = port; }
    public void setToday(Date today) { this.today = today; }
   使用注解注入:在day_02中介绍

  数据类型的注入: 
    注入的数据类型有3类:
      第一类:基本类型和String类型
      第二类:其他bean类型(必须是在spring的配置文件中出现过的bean)
      第三类:复杂类型(集合类型)
      <bean id="customerService" class="spring.service.impl.CustomerServiceImpl">
       <property name="driver" value="com.mysql.jdbc.Driver"></property>
       <property name="port" value="3307"></property>
       <property name="today" ref="now"></property>
      </bean>
      <bean id="now" class="java.util.Date"></bean>
    
      如上例中:value则是属于第一类中的String类型,ref中则是第二类,由于ref是其他bean类型,所以需要在下面配置ref中now这个bean类型。
    第三类:复杂类型的注入
  结构相同,标签可以互换
  如:map和properties可以互换
   list,array,set可以两两交换
        <bean id="customerService" class="spring.service.impl.CustomerServiceImpl">
    <property name="myStrs">
  <array>
   <value>AAA</value>
   <value>BBB</value>
   <value>CCC</value>
   </array>
   </property>    <property name="myList">
   <list>
   <value>AAA</value>
   <value>BBB</value>
   <value>CCC</value>
   </list>
   </property>    <property name="mySet">
   <set>
   <value>AAA</value>
   <value>BBB</value>
   <value>CCC</value>
   </set>
   </property>    <property name="myMap">
   <map>
   <entry key="testD" value="DDD"></entry>
   <entry key="testE">
   <value>EEE</value>
   </entry>
   <!--上面两种表示方法都可以-->
   </map>
   </property>    <property name="myProps">
   <props>
   <prop key="testF">FFF</prop>
   <prop key="testG">GGG</prop>
   </props>
   </property>
    </bean> 交换标签后      <property name="myStrs">
     <list>
     <value>AAA</value>
     <value>BBB</value>
     <value>CCC</value>
     </list>
     </property>      <property name="myList">
     <array>
     <value>AAA</value>
     <value>BBB</value>
     <value>CCC</value>
     </array>
     </property>      <property name="myMap">
     <map>
     <props>
     <prop key="testF">FFF</prop>
     <prop key="testG">GGG</prop>
     </props>
     </map>
     </property>      <property name="myProps">
     <entry key="testD" value="DDD"></entry>
     <entry key="testE">
     <value>EEE</value>
     </entry>
     </property>

javaSpring学习总结day_01的更多相关文章

  1. Java学习笔记day_01

    Java学习笔记(复习整理) 虽然不知道该怎么写,但是不起步就永远不知道该怎么做..刚开始可能会写的很差劲,但会一点一点变好的. 本笔记是以我按照传智播客的视频和Java核心思想来学习,前面的基础部分 ...

  2. javaSpring学习总结day_02

    使用注解注入: 1.用于创建bean对象 @Component: 作用:相当于配置了一个bean标签 位置:类上面 属性:value,含义是bean的id,当不写时,有默认值,默认值是当前类的短名,首 ...

  3. JavaSpring【一、概述】

    主要内容 JavaSpring[一.概述] JavaSpring[二.IOC] JavaSpring[三.Bean] JavaSpring[四.Bean管理注解实现] JavaSpring[五.AOP ...

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

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

  5. Angular2学习笔记(1)

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

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

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

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

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

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

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

  9. Unity3d学习 制作地形

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

随机推荐

  1. go 函数和流程控制

    if/else分支判断 基本结构如下: if condition1 { } if condition1 { } else { } if condition1 { } else if condition ...

  2. C# interface (接口基础知识详解)

    Interface(接口) (本文转载地址:http://blog.sina.com.cn/s/blog_574c993d0100d59n.html) 介绍:C#中的接口提供了一种实现运行时的多态.通 ...

  3. Leetcode976. Largest Perimeter Triangle三角形的最大周长

    给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的.面积不为零的三角形的最大周长. 如果不能形成任何面积不为零的三角形,返回 0. 示例 1: 输入:[2,1,2] 输出:5 示例 2 ...

  4. 在egg.js中使用mongodb

    1.egg.js官网只推荐了mysqle,要用mongodb得另找资料.通过查找,大家都在用Mongoose连接,于是乎学习. 网站链接:https://www.npmjs.com/package/e ...

  5. 给大家介绍一下linux系统高级命令

    输出重定向(mip.0834jl.com) ;覆盖文件内容 回声' 123 ' 测试;覆盖原始内容 回声' 123 ' 测试;原始存在(共存) echo 'ken2 '(www.jl0834.com) ...

  6. MySQL基础知识 数据库 数据表

    1.数据库结构 库 表 数据 2. sql(structured query language)结构化查询语言 管理数据库 管理表 管理数据 3.数据库 增删改查 增 create database  ...

  7. linux安装splunk-enterprise

    一.介绍 Splunk是一款功能强大,功能强大且完全集成的软件,用于实时企业日志管理,可收集,存储,搜索,诊断和报告任何日志和机器生成的数据,包括结构化,非结构化和复杂的多行应用程序日志. 它允许您以 ...

  8. 基于UDP协议的套接字编程

    基于udp协议的套接字编程 UDP是无链接的,先启动那一端都不会报错 UDP协议是数据报协议,发空的时候也会自带报头,因此客户端输入空,服务端也能收到 一般不用与传输大数据 虽然没有粘包问题,但是不能 ...

  9. JAVA中日期 yyyy-MM-dd HH:mm:ss和yyyy-MM-dd hh:mm:ss的区别

    HH是24小时制,hh是12小时制 区别就是:大写的H是二十四小时制的小时数(0-23),小写的h是十二小时制的小时数(am/pm 1-12) //24小时制 SimpleDateFormat sdf ...

  10. bzoj1010: [HNOI2008]玩具装箱toy——斜率优化

    方程 $\Large f(i)=min(f(j)+(s(i)-s(j)-1-L)^2)$ 其中$s(i)$为i的前缀和再加上$i$ 对于某个$i$若$j$比$k$优,则 $\large f(j)+(s ...