Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1300|回复: 0

(整理)Spring的Core模块(二)

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2011-6-6 15:57:11 | 显示全部楼层 |阅读模式

    配置java Bean
       一个BeanDefination定义一个Bean,在XML中对应一个<bean>标记。Spring通过<bean>配置来实例化Bean,设置Bean的属性,以及设置Bean间相互的依赖性。
    1.         基本配置<bean>
    一个<bean>通常需要定义idclass属性。Class属性肯定是必须的。如果配置文件中配置的其它Bean中引用了该Bean,则id属性是必须的。Bean则通过id属性相互访问。例如:
    <bean id=”exampleBean” class=”examples.ExampleBean”>
    </bean>
    上述代码等同于Java代码:
    ExampleBean exampleBean = new ExampleBean();
    其中,对象名exampleBean相当于配置中的id属性。
    2.         工厂模式factory-method
    如果一个Bean不能通过new直接实例化,而是通过工厂类的某个方法创建的,需要把<bean>class属性配置为工厂类(或者把factory-bean属性配置为工厂类对象)factory-method属性配置为产生实例的方法:
    <!—等同于exampleBean=example.MyFactoryBean.createInstance(); à
    <bean id=”exampleBean” class=”example.MyFactoryBean” factory-method=”createInstance”/>
    <!—等同于exampleBean2=myFactoryBean.createInstance(); à
    <bean id=”exampleBean2” factory-bean=”myFactoryBean” factory-method=”createInstance”/>
    3.         构造函数<constructor-arg>
    如果Java Bean的构造函数带有参数,需要指定构造函数的参数。<constructor-arg/>指定构造函数参数所用的Bean或者值。多个参数时,用多个<constructor-arg/>配置即可。例如:
    <bean id=”exampleBean” cl.ass=”examples.ExampleBean”> <!—定义Bean à
      <constructor-arg><ref bean=”anotherExampleBean”/></constructor-arg><!—构造函数参数 à
       <constructor-arg><ref bean=”yetAnotherBean”/></constructor-arg> <!--构造函数参数à
       <constructor-arg><value>1</value></constructor-arg>
    </bean>
    每个<constructor-arg>配置一个参数,参数有先后顺序,顺序要与构造函数相同。<ref bean=”anotherExampleBean”/>表示参数名为anotherExampleBean的另一个Bean对象。等同于Java代码:
    Public class ExampleBean{
       Private AnotherBean beanOne;
       Private YetAnotherBean beanTwo;
       Private int i;
       Public ExampleBean(AnotherBean anotherBean,YetAnotherBean yetAnotherBean,int i){
    This.beanOne = anotherBean;
    This.beanTwo = yetAnotherBean;
    This.i = i;
      }
    }
    4.         单态模式singleton
    Bean可以定义是否为单态模式(Singleton)。单态模式也称为单例模式,即在程序中只有一个实例。单例模式是个很有用的模式,有的Java对象在程序中只要有一个便足够用了,多了会浪费资源。像数据源等Bean一般配置为单态模式。Spring默认为单态模式,如果想使用非单态模式(称为Prototype模式),需把singleton属性置为false
    <bean id=”exampleBean” class=”examples.ExampleBean” singleton=”false”/>
    非单态模式下,每次请求该Bean,都会生成一个新的对象。
    5.         配置属性<property/>
    Spring通过Beansetter方法设置属性。因此,需要由Spring注射的属性一般都具有公共的gettersetter方法。例如下面的配置代码:
    <bean id=”dataSource” class=”org.apache.commons.dbcp.BasicDataSource” destory-method=”close”>
      <property name=”driverClassName”>
         <value>com.mysql.jdbc.Driver</value>
      </property>
      <property name=”url” value=”jdbc:mysql://localhost:3306/mydb”>
      </property>
      <property name=”username” value=”root”/>
      <property name=”defaultAutoCommit” value=”false”/>
      <property name=”maxActive” value=”100”/>
    </bean>
    Destroy-method属性配置关闭方法。如果有配置,在丢弃Java对象时会调用该方法。某些数据源,SessionFactory等对象都需要用destroy-method配置关闭方法。<property>配置了String,boolean,int类型的属性。注意各个<property>的写法略有不同,既可以使用value属性,也可以使用<value>字元素标签,效果是等价的。等同于Java代码:
    BasicDataSource dataSource = new BasicDataSource();
    dataSource.setDriverClassName(“com.mysql.jdbc.Driver”);
    dataSource.setUrl(“jdbc:mysql://localhost:3306/myweb”)
    dataSource.setUsername(“root”);
    dataSource.setDefaultAutoCommit(false);
    dataSource.setMaxActive(100);
    注:
    <property name=”password”>
      <value></value>
    </property>
    会将password属性设置为””,而不是null。如果设置null属性,可以使用<null/>
    <property name=”password”>
      <null/>
    </property>
    或者干脆不设置。
    6.         设置对象属性<ref>
    Spring配置文件中的Bean之间可以相互引用,引用时间<ref>标签配合Beanid属性使用。<ref/>既可以用在<property/>属性中,也可以用在<construct-arg/>构造函数的参数中,还可以用在其他的地方。例如:
    <bean id=”dao” class=”com.zhangjie.spring.example.DaoImpl”></bean>
    <bean id=”serviceImpl” class=”com.zhangjie.spring.example.ServiceImpl”>  <!--Service à
      <property name=”dao”>  <!—设置属性 à
         <ref bean=”dao”/>  <!—属性值为DAO对象 à
      </property>
    </bean>
    <ref>bean属性为目标< bean>id属性。也可以使用<property>ref属性,这是一种简写的方式,适用于只有一个值的情况,例如:
    <property name=”dao” ref=”dao”></property>
    或者使用内部配置(或者内联配置),类似与Java中的匿名类对象。因为内部配置一般不会被其他的Bean引用,因此不需要配置内部Beanid。例如:
    <property name=”dao”>
      <bean class=”com.zhangjie.spring.example.DaoImpl”></bean>
    </property>
    除了使用<ref>bean属性,还可以使用local,parent,它们与bean属性的作用是一样的。不同的是,local只能使用本配置文件中的bean,而parent只能使用父配置文件中的bean,但bean则没有任何限制。
    7.         配置List属性<list>
    <list>配置java.util.List类型的属性。List属性中可配置任意类型对象。如果为Java对象,则使用ref指定,或者使用<bean>定义新实例,如果是普通类型如Spring,int,double等直接用字符串即可。<list/>里的元素会按配置的先后顺序排序。例如:
    <property name=”someList”> <!—设置List类型 à
      <list>  <!—list标签 à
         <value>String,Integer,Double,Boolean等类型对象</value><!—String类型 à
         <ref bean=”myDataSource”/> <!—Java对象à
      </list>
    </property>
    8.         配置Set属性<set>
      <set>配置java.util.Set类型的属性。Set属性中可配置任意类型对象。如果为Java对象,则使用<ref/>指定,或者使用<bean>重新定义新实例。如果是普通类型如String,int,double等,直接用字符串即可。例如:
    <property name=”someSet”>
       <set>  <!—set标签 à
          <value>String,Integer,Double,Boolean等类型对象</value> <!—String类型 à
          <ref bean=”myDataSource”/> <!—Java对象 à
       </set>
    </property>
    9.         配置Map属性<map>
    <map>配置java.util.Map类型的属性。<entry>配置Map里德元素,key指定索引,value指定值。如果为Java对象,则使用ref指定,或者使用<bean>定义新实例。如果key为对象,使用key-ref属性,例如:
    <property name=”someMap”> <!—设置Map类型 à
      <map>     <!—Map标签 à
         <entry key=”yup an entry”>       <!—设置key属性 à
              <value>just some string</value>  <!—设置value属性 à
         </entry>
         <entry key-ref=”myDataSource”>  <!—设置key属性 à
              <ref bean=”serviceImpl”/>  <!—设置value属性à
         </entry>
      </map>
    </property>
    10.     配置Properties属性<props>
    使用<props><prop>配置Properties属性。<props/>配置一个Properties对象,<prop/>配置一条属性,属性key配置索引。例如:
    <property name=”props”> <!—设置Properties类型 à
      <props> <!—props标签 à
         <prop key=”url”>http://www.dearbaba.com</prop> <!—设置prop属性对 à
         <prop key=”name”>dearbaba</prop> <!—设置prop属性对 à
      </props>
    </property>
    等价于Java代码:
    Properties props = new Properties(){  //定义一个Properties
      { //实例化时执行初始化代码
    Put(“url”,”[url]http://www.dearbaba.com
    回复

    使用道具 举报

    该用户从未签到

    发表于 2011-9-24 10:24:03 | 显示全部楼层
    谢谢楼主分享啊。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-20 12:52 , Processed in 0.447260 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表