一.前言

 <bean id="user1" scope="singleton" init-method="myInit" destroy-method="myDestory" class="com.ahd.domain.User">

  1.id作用设置对象名,scope为作用域,class是相关bean的完整路径.

  2.使用原型bean会对性能产生影响,尽量不要设置成prototype,除非有必要,尽量使用scope=”singleton”

  3.init-method和destroy-method为定制方法,前者为定制初始化bean的方法,后者为定制销毁bean及其他需要关闭对象的方法

  4.定制方法也可以通过注解的方式配置

  5.不推荐使用接口,使用接口后bean和springAPI绑定了

  6.如果要把bean的属性设置成空,可以设置成<null/>


二.bean的作用域

  

三.如何给集合对象注入值(map,list,set,数组)?

  1.list和数组类似:

        <property name="namelist">
<list>
<value>北京</value>
<value>上海</value>
<value>天津</value>
</list>
</property>
     <!--value元素改成ref即可引用其他bean对象 -->
   <property name="userlist">
<list>
<ref bean="user1"/>
<ref bean="user2"/>
</list>
   </property>

  

  java测试遍历代码:

    //遍历list<String>
for(String s:cu.getNamelist()){
System.out.println(s);
}
//遍历list<User>
System.out.println();
for(User user:cu.getUserlist()){
System.out.println(user.getId()+user.getName());
System.out.println(user);
}

  2.配置set,set无序不重复,配置代码beans:

     <property name="userset">
<set>
<ref bean="user1"/>
<ref bean="user2"/>
</set>
</property>

  

  java测试遍历代码:

        //遍历set
for(User user:cu.getUserset()){
System.out.println("set"+user.getId()+user.getName());
}

  3.配置map,

        <property name="usermaps">
<map>
<entry key="111" value-ref="user1"/>
<entry key="222" value-ref="user2"/>
</map>
</property>

  

  java测试遍历代码:

        //遍历map,方式一
Map<String,User> map=cu.getUsermaps();
for(String key:map.keySet()){
System.out.println(key+map.get(key)+"user:"+map.get(key).getId());
}
//遍历map,方式二(使用迭代器)
Iterator<Map.Entry<String,User>> it=map.entrySet().iterator();
while(it.hasNext()){
Map.Entry<String, User> entry=it.next();
System.out.println("key:"+entry.getKey()+" value:"+entry.getValue());
} //遍历map,方式三,适合数据量特别大的时候
for(Map.Entry<String, User> entry:map.entrySet()){
System.out.println(entry.getKey()+entry.getValue());
} //遍历map,方式四,只能遍历value,不能遍历key
for(User user:map.values()){
System.out.println(user);
}

  4.给属性集合配值:

     <property name="userpro">
<props>
<prop key="user">password</prop>
<prop key="user1">password1</prop>
</props>
</property>

  

  测试代码

     Properties prop=cu.getUserpro();
Enumeration<Object> keys = prop.keys();
while(keys.hasMoreElements()){
String key=keys.nextElement().toString();
System.out.println(key+" "+prop.getProperty(key));
}

  

四.内部bean,

  内部bean不能被其他对象所引用,只能供父bean使用

  <bean id="user1" class="com.ahd.domain.User">
<property name="name">
<bean id="user3" class="com.ahd.domain.Use">
<property name="id" value="2" />
<property name="name" value="李四" />
</bean>
</property>
</bean>

五.继承 

    <bean id="check3"   parent="validateUser"    class="com.ahd.serviceImpl.CheckUser3">
<property name="phone">
<value>13548965896</value>
</property>
</bean>

  

  

  CheckUser3 类.
package com.ahd.serviceImpl;

import com.ahd.service.ValidateUser;

public class CheckUser3 extends CheckUser1{
private String phone;
public CheckUser3(){ }
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
} }

spring_05装配bean的更多相关文章

  1. [spring]03_装配Bean

    3.1 JavaBean 3.1.1 JavaBean 是什么 JavaBean 是一种JAVA语言写成的可重用组件. 为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器. Jav ...

  2. Spring学习系列(三) 通过Java代码装配Bean

    上面梳理了通过注解来隐式的完成了组件的扫描和自动装配,下面来学习下如何通过显式的配置的装配bean 二.通过Java类装配bean 在前面定义了HelloWorldConfig类,并使用@Compon ...

  3. 装配bean

    spring有三种装配bean的方式:隐式装配.java代码装配.xml装配 隐式装配最为省事方便,也称为自动化装配 这三种装配方式可以混搭着来用 在这里通过一个例子来讲述配置 CD的两个实现,一个是 ...

  4. IOC装配Bean(注解方式)

    Spring的注解装配Bean Spring2.5 引入使用注解去定义Bean @Component 描述Spring框架中Bean Spring的框架中提供了与@Component注解等效的三个注解 ...

  5. [原创]java WEB学习笔记103:Spring学习---Spring Bean配置:基于注解的方式(基于注解配置bean,基于注解来装配bean的属性)

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. spring IOC装配Bean(注解方式)

    1 Spring的注解装配Bean (1) Spring2.5 引入使用注解去定义Bean @Component 描述Spring框架中Bean (2) Spring的框架中提供了与@Componen ...

  7. Spring常用注解,自动扫描装配Bean

    1 引入context命名空间(在Spring的配置文件中),配置文件如下: xmlns:context="http://www.springframework.org/schema/con ...

  8. Spring学习笔记—装配Bean

    在Spring中,对象无需自己负责查找或创建与其关联的其他对象.相反,容器负责把需要相互协作的对象引用赋予各个对象.创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入的本质. ...

  9. 自动装配Bean

    Spring提供了几种技巧,可以减少XML的配置数量: 自动装配(autowiring):可以减少<property>(setter注入)和<constructor-arg>( ...

随机推荐

  1. 项目设计day1

    项目内容:一个实时监控斗鱼TV某个主播弹幕的设计 通过python爬虫获取当前弹幕,通过flume采集数据,接下来数据分为线上和线下两种方案: 线上:实时分析,分为两种方案:(1) flume+kaf ...

  2. Zookeeper在Linux平台Java开发环境配置(命令行)

    1.安装必要软件 首先需要安装ant, automake, autoconf, cppunit.在ubuntu上可以直接用apt-get install安装 2.Build Zookeeper 切换到 ...

  3. 1-C++的并发世界

    1.1 何谓并发 并发的两种方式 多核机器上的真正并行 单核机器的任务切换 并发的两种途径 多进程并发 1.1 多进程并发需要通过操作系统进行进程间通信 多线程并发 2.1 多线程并发需要共享内存 1 ...

  4. Django搭建博客记(一)

    这里记录一些 Django 搭建博客遇到的一些问题 参考书籍为 Django by Example, 这里记录与书籍内容不包含的内容. 搭建环境: 阿里云 ECS + CentOS7 一开始搭建的时候 ...

  5. eclipse安装及配置pydev

    1.首先安装jre,这里记住jre的安装目录,32位操作系统默认安装在“C:\Program Files (x86)\Java\jre1.8.0_91” 2.配置eclipse,这里使用的是压缩包不需 ...

  6. 「ZJOI2019」&「十二省联考 2019」题解索引

    「ZJOI2019」&「十二省联考 2019」题解索引 「ZJOI2019」 「ZJOI2019」线段树 「ZJOI2019」Minimax 搜索 「十二省联考 2019」 「十二省联考 20 ...

  7. php安全编程&python测试实例编写

    前言 本文首发i春秋论坛. 本篇文章主要分享一个python暴破脚本,该脚本采用optparse模块,支持自定义字典位置:用了多线程(虽然我感觉和单线程速度差不多..是我的错觉还是线程写的不对..求表 ...

  8. Android Studio 3.0 变化之 implementation与compile

    Android Studio 3.0 出来很久了,本文就着重介绍一下 新版本中 Moudle 中 build.gradle 文件中的变化. 我们来看看新建一个项目在 Moudle 中的 depende ...

  9. Kali学习笔记30:身份认证与命令执行漏洞

    文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 实验环境: Kali机器:192.168.163.13 ...

  10. python创建数组的方法

    一 直接定义法: 1.直接定义 matrix=[0,1,2,3] 2.间接定义 matrix=[0 for i in range(4)] print(matrix) 二 Numpy方法: Numpy内 ...