Spring框架bean.xml学习笔记(娃娃级)

1: 了解配置文件 === xml scheme(dtd) (配置和注册了文件的标准和基本信息,可以定义文件的签名的格式)

2: 了解bean的装载的过程和作用域和依赖关系的问题.

3: 基于注解配置

4: 总结ioc
1>引用sxd文件(xsd:定义spring标准的配置文件,目的是为了提示方便编程)

        a. 默认命名空间,配置bean信息(默认存在)
            xmlns="http://www.springframework.org/schema/beans"
        b.使用xml的标准是W3 XMLSheme-instance(默认存在)
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        ==================   下面为动态添加  ===================
        c. 具体的名称(上方定义命名空间[xmlns:xxx=描述地址] 下方定义引用地址[xsi:schemaLocation=引用地址])
         p:命名空间:



    xmlns:p="http://www.springframework.org/schema/p"
        作用:简化在xml配置bean的属性 在<bean>中使用p:属性名来配置

    AOP:命名空间:
        xmlns:aop="http://www.springframework.org/schema/aop"
        xsi:schemaLocation:http://www.springframework.org/schema/aop  http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
        作用:简化AspectJ的AOP在xml中配置

    util:命名空间:
                xmlns:util="http://www.springframework.org/schema/util"
                xsi:schemaLocation:
                http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd

    context:命名空间:
                xmlns:context="http://www.springframework.org/schema/context"
                xsi:schemaLocation:
                http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context.xsd

        作用:1.配置自动扫描bean注解类

    mvc:命名空间:
                xmlns:mvc="http://www.springframework.org/schema/mvc"
                xsi:schemaLocation:
                http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd

2>基本Bean配置
[其实注解和配置文件为两种不同的形式,他们都在找类]
a.基本注入(给属性赋值)
1> 一般属性配置

     <bean  id="user" class="com.ioc.User(实体类地址)">

               <property name="age" value="20"></property> <!-- 属性赋值 -->

               <property name="username" value="name"></property><!-- 属性赋值 -->

               <property name="password" value="123456"></property><!-- 属性赋值 -->

               <property name="score" value="89.9f"></property><!-- 属性赋值 -->

           </bean>

         <!--对上面配置的简写 -->
         <bean class="com.ioc.User" p:age="56" p:username="name" p:score="89.3" p:password="789779879"></bean>

        <!--学生与老师绑定配置. 一个老师多个学生,学生多个属性-->
        <!--有三个学生 简单 豆豆 jony 分别给属性赋值(姓名 年龄 班级 老师)-->
          <bean id="jiandan" class="com.ioc.Student" p:name="jiandan" p:age="16" p:classNo="1" p:teacher-ref="teacher"></bean>
         <bean id="doudou" class="com.ioc.Student" p:name="逗逗同学"p:age="15"p:classNo="2" p:teacher-ref="teacher"></bean>
        <bean id="jony" class="com.ioc.Student" p:name="jony"p:age="17"p:classNo="3" p:teacher-ref="teacher">
 </bean>
         <!--有一个老师叫做 ddd并给他属性赋值-->
    <bean  id="teacher" class="com.ioc.Teacher" p:name="ddd" p:age="30" p:names="xiaoke,xiaozhang,xiaowang">

        <!--集合对象list,添加keke老师学生对象 List<Student> student; -->
         <property name="students">
                <list> <ref bean="doudou"/><ref bean="jiandan"/> <ref bean="jony"/></list>
         </property>
         <!--List集合可以重复且有序. 学生成绩属性赋值 List<Float> scores; -->

        <property name="scores">
             <list><value>89.6</value><value>99.6</value> <value>109.6</value></list>
        </property>  
         <!--set不允许重复 无序 . 生成绩属性赋值 List<Float> scores; -->
         <property name="jobs">
         <set><value>服务生</value><value>帮转工</value><value>程序员</value><value>厨师</value>
             <value>厨师</value></set>
     </property> 
    <!-- 数组  简写方式:p:names="宝宝,小明,小红" String[] arr; -->
     <property name="names">
         <array><value>宝宝</value><value>小明</value><value>小红</value></array>
     </property>
    <!--Map注入 HashMap<String, Integer> map  --> 
     <property name="map">
         <map>
             <entry><key><value>username</value></key><value>keke</value></entry>
             <entry><key><value>age</value></key><value>30</value></entry>
         </map>
     </property>
  <!--配置邮箱  Properties emails; --> 

  <property name="emails">
       <props><prop key="demomail">123@qq.com</prop>
            <prop key="jonymail">123123@qq.com</prop>
            <prop key="doudoumail">878979@qq.com</prop>
       </props>
   </property>

<!--  string 转化为date  Date ctime; -->

<property name="ctime" >

<bean  class="com.ioc.StringUtils" factory-method="parseDate">

 <constructor-arg index="0" value="2015-12-12 12:12:10"></constructor-arg>

<constructor-arg index="1" value="yyyy-MM-dd HH:mm:ss"></constructor-arg>

</bean>

</property>

  <!--上述所需要的类:-->

   public class StringUtils {

   public static Date parseDate(String dateString,String pattern) throws ParseException{

    return new SimpleDateFormat(pattern).parse(dateString);

   }

    }

 b.构造函数注入
          id:为唯一ID
           class:实体类的地址 
           index:按照参数索引匹配,应从0开始,依次写入.  切记一定和构造函数参数的顺序保持一致( 其目的找到和自己心仪的"妹子" )
           type:定义属性的类型
           value:属性赋值. 
     <bean id="user5" class="com.ioc.User">

<constructor-arg index="0" type="java.lang.String" value="name"></constructor-arg>

<constructor-arg index="1" type="java.lang.String" value="123456ADSDF"></constructor-arg>

<constructor-arg index="2" type="java.lang.Integer"><value>30</value></constructor-arg>

<constructor-arg index="3" type="java.lang.Float" value="89.9234"></constructor-arg>

<constructor-arg index="4" type="java.lang.String" value="578979789797979"></constructor-arg>

<constructor-arg index="5" type="java.lang.String" value="湖南长沙"></constructor-arg>

</bean>

   <!--c.工厂注入(set)-->

        set注入:它是怎么实例化对象 调用默认构造函数,如果一个类中你定义了带有参数的构造函数,一定要把默认的构造函数定义出来
         构造函数注入:选择带有参数的,他要赋值
         工厂注入:
         set注入
         构造函数注入都是给初始化对象和赋值

工厂模式
         //属性(基础属性和对象属性) 
            byte short int long 
            float double
            boolean char和
            Byte Short Integer Long 
            Float Double 
            Boolean Character
            String 都采用value 进行赋值

             <property name="username" value="keke"/>

    对象属性:采用引用(ref)赋值

    <property name="teacher" ref="teacher"/>     

d.bean.xml 常用属性

    {<!-- 配置过程中会出现一些特殊字符 <![CDATA[字符串]]>

    解决办法一: < = &lt;     > = &gt;    & = &amp;    " = &quot;    ' = &apos;

    解决方法二: <![CDATA[字符串]]>

    需要值:就用value

    需要对象或者引用:  定义一个bean 通过ref="beanid"}

       1>bean作用域[scope = "xxx"]:

         scope:范围,作用域===它就专门去控制当前bean对象的什么周期

         singleton:单例模式===它是被spring应用上下文进行管理和回收===BeanDefinitMap

         prototype:多例模式===它是不会被spring应用上下文进行管理,它值只实例化,被jvm gc负责回收

     2>懒加载lazy-init

       lazy-init:默认值false

       代表延迟加载对象创建.加了延迟的bean他们在调用getBean方法的时候才被实例化

       注意点:如果你这个延迟的对象被一个没有加延迟的bean引用了的话,那么这个设置就忽略,立即加载

        init-method:创建对象过程中,执行方法

        init-method:单bean方法的调用



        <bean id="user" class="com.ioc.User" init-method="init"  p:username="mac"></bean>

        <bean id="user2" class="com.ioc.User" lazy-init="true"></bean>

*3>抽象类与继承and依赖*

        Parent 抽象类有构造函数没有? A:y B n 抽象类不能实例化, 抽象类中的构造函数其实说明白就是给通用属性赋值使用,给子类的构造函数去调用(super).

        依赖:两者之间才叫依赖bean和bean之间

        depends-on是指指定Bean初始化及销毁时的顺序,使用depends-on属性指定的Bean要先初始化完毕后才初始化当前Bean,由于只有"singleton"Bean才能被Spring管理销毁,所以当指定的Bean都是"singleton"时,使用depends-on属性指定的Bean要在指定的Bean之后销毁>
    <bean id="abstractUser" class="com.ioc.User" p:username="keke" p:password="30" abstract="true"></bean>

    <bean id="keke" parent="abstractUser" p:username="累土" p:address="湖南长沙"></bean>

    <bean id="keke2" parent="abstractUser" p:address="湖南长沙"></bean>

    <bean id="connection" class="com.ioc.ConnectionUtil" depends-on="oracle"></bean>

    <bean id="mysql" class="com.ioc.MysqlDriver"></bean>

    <bean id="oracle" class="com.ioc.OracleDriver"></bean>

“`

3>注解配置(spring3.x之后出现annotation)

MVC:    Model(模型层: 负责数据的存储和交换.  javabean,bean,vo,pojo,model,entity)
             Controller(控制层: 将数据传入和设置到模型层.  service / dao )
             View(视图层: 手机数据传输给模型层.  controller/action/jsp)

4>零配置(spring-boot)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值