Spring3.x框架的使用

Spring的优缺点

优点:
1:开发人员可以只关注整个结构中的其中某一层;
2:可以很容易的用新的实现来替换原有层次的实现;
3:可以降低层与层之间的依赖;
4:有利于标准化;
5:利于各层逻辑的复用。
6:结构更加的明确
7:在后期维护的时候,极大地降低了维护成本和维护时间
缺点:
1:降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
2:有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

在项目下导入jar包和schema文件夹

schema文件夹
spring-beans-3.2.xsd
spring-context-3.2.xsd

在src下面导入bean.xml

bean.xml的名字并没有固定,只要是xml文件就可以了。

配置bean.xml

要写Student实体类,这个类里要包括无参的构造函数。

    <bean name="stu" class="com.huihui.ioctest.Student" scope="prototype"> 
    <property name="name"> <value>tom</value> </property> </bean>

测试配置是否正确,只需要写test类里面有main方法就可以了。

    ApplicationContext ac=new ClassPathXmlApplicationContext("bean.xml");
    Student stu=(Student) ac.getBean("stu");
    System.out.println(stu);

例子1

1,构建包com.briup.bean在包下构建Address类,属性如下:

   private String city;
   private String street;
   private String country;

在包下构建Person类,属性如下:

 private int sNo;
 private String name;
 private boolean gender;
 private int age;
 private Address address;

提供get和set方法,重写toString方法,输出当前对象字符串表达形式

2,使用Set方式完成一下要求:
完成基本类型以及对象类型的装配操作
1)构建包com.briup.ioc.set
2)在包下构建set.xml
配置文件使用set方式注入完成Person类中Address属性和其他基本属性的注入
3)完成之后,使用bean设置Student的别名并修改相关文件测试

set.xml

 <bean name="Address" class="com.huihui.bean.Address">
    <property name="city"> <value>city</value> </property>
    <property name="street"> <value>street</value> </property>
    <property name="country"> <value>country</value> </property>
</bean>  
<alias name="Address" alias="a" />     
<bean name="Person" class="com.huihui.bean.Person">
    <property name="address" ref="a"></property>
    <property name="sNo"> <value>111111</value> </property>
    <property name="name"> <value>sNoname</value> </property>
    <property name="gender"> <value>true</value> </property>
    <property name="age"> <value>12</value> </property>
</bean>

Test

String path = "com/huihui/ioc/set/set.xml";
    ApplicationContext  ac =new ClassPathXmlApplicationContext(path);
    Person sb = (Person) ac.getBean("Person");
    System.out.println(sb);
    System.out.println(sb.getAddress());

例子2

集合的装配操作
1)在com.briup.bean中构建结合类CollBean,属性如下,并提供get/set方法

   private List<String> lists;
   private String[] arrays;
   private Set<String> sets;
   private Map<Integer, String> maps;
   private Properties pros;

2)构建包com.briup.ioc.coll
3)在包下构建coll.xml配置文件完成各种集合属性的注入

coll.xml

    <bean name="CollBean" class="com.huihui.bean.CollBean">
    <property name="lists">
         <list>
            <value>list1</value>
            <value>list2</value>
            <value>list3</value>
         </list>
    </property>
    <property name="sets">
         <set>
            <value>set1</value>
            <value>set1</value>
            <value>set3</value>
         </set>
    </property>
    <property name="maps">
         <map>
            <entry key="1">
              <value>value1</value>
            </entry>
            <entry key="2">
              <value>value2</value>
            </entry>
         </map>
    </property>
    <property name="pros">
         <props>
           <prop key="key1">prop1</prop>
          <prop key="key2">prop2</prop>
          <prop key="key3">prop3</prop>
         </props>
    </property>
</bean>  

Test

   String path = "com/huihui/ioc/coll/coll.xml";
    ApplicationContext  ac =new ClassPathXmlApplicationContext(path);
    CollBean sb = (CollBean) ac.getBean("CollBean");
    sb.printInfo();

CollBean

   public void printInfo(){
    System.out.println("sets");
    System.out.println(sets);
    Set proSet=pros.entrySet();
    Iterator it=proSet.iterator();
    while(it.hasNext()){
        Map.Entry entry1=(Entry) it.next();
        System.out.println("pros key"+entry1.getKey());
        System.out.println("pros value"+entry1.getValue());
    }
}

构造器注入

<bean name="DateBean" class="com.huihui.bean.DateBean">
    <constructor-arg type="int" value="25"></constructor-arg>
    <constructor-arg type="int" value="2"></constructor-arg>
    <constructor-arg type="int" value="100"></constructor-arg>
</bean>

第二种方式

   <constructor-arg index="2">
        <value>30</value>
     </constructor-arg>
     <constructor-arg index="0">
        <value>200</value>
     </constructor-arg>
     <constructor-arg index="1">
        <value>lily</value>
     </constructor-arg>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容