一.前言

 <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. C语言setjmp用法解析

    https://www.cnblogs.com/hbiner/p/3261437.html

  2. MySQL9:索引实战

    索引 无论是面试,还是实际工作中,对于一个Java程序员来说,数据库优化是避不开的一个技术点,关于数据库的优化,在性能达不到要求的情况下,我大致给出以下几个方向: (1)优化表结构,对常用字段和非常用 ...

  3. 每天学点SpringCloud(二):服务注册与发现Eureka

    相信看过 每天学点SpringCloud(一):简单服务提供者消费者调用的同学都发现了,在最后消费者调用提供者的时候把提供者的地址硬编码在了代码中,这样的方式肯定是不行的,今天,我们就是要Eureka ...

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

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

  5. 用Ajax遍历三级下拉框

    用Ajax遍历三级下拉框 //通过一级分类的id查二级分类(记得在前端网页按钮绑定点击事件) function getSecondCategory(oneCategoryId){ alert(&quo ...

  6. 音频处理库—librosa的安装与使用

    序言 Librosa是一个用于音频.音乐分析.处理的python工具包,一些常见的时频处理.特征提取.绘制声音图形等功能应有尽有,功能十分强大.本文主要介绍librosa的安装与使用方法. 一.lib ...

  7. Liunx百宝箱(Centos补充)

    Liunx可分为Redhat系列和debian系列,其采用的都是相同的Liunx内核,最大的不同点就是对RPM包的管理,使用的软件源不同.但相比之下debian系列的桌面端较好,Redhat其稳定性较 ...

  8. python-图像处理(映射变换)

    做计算机视觉方向,除了流行的各种深度学习算法,很多时候也要会基础的图像处理方法. 记录下opencv的一些操作(图像映射变换),日后可以方便使用 先上一张效果图 图二和图三是同一种方法,只是变换矩阵不 ...

  9. Ubuntu下将python从2.7升级到3.5

    在ubuntu 的终端中用代码下载最新的Python sudo apt-get install python3 系统会提示输入Linux 的密码,输入密码后下载 刚才下载的Python程序被安装在us ...

  10. 学习Raft算法的笔记

    Raft是一种为了管理日志复制的一致性算法.它提供了和Paxos算法相同的功能和性能,但是它的算法结构和Paxos不同,使得Raft算法更加容易理解并且更容易构建实际的系统.为了提升可理解性,Raft ...