spring_05装配bean
一.前言
<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的更多相关文章
- [spring]03_装配Bean
3.1 JavaBean 3.1.1 JavaBean 是什么 JavaBean 是一种JAVA语言写成的可重用组件. 为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器. Jav ...
- Spring学习系列(三) 通过Java代码装配Bean
上面梳理了通过注解来隐式的完成了组件的扫描和自动装配,下面来学习下如何通过显式的配置的装配bean 二.通过Java类装配bean 在前面定义了HelloWorldConfig类,并使用@Compon ...
- 装配bean
spring有三种装配bean的方式:隐式装配.java代码装配.xml装配 隐式装配最为省事方便,也称为自动化装配 这三种装配方式可以混搭着来用 在这里通过一个例子来讲述配置 CD的两个实现,一个是 ...
- IOC装配Bean(注解方式)
Spring的注解装配Bean Spring2.5 引入使用注解去定义Bean @Component 描述Spring框架中Bean Spring的框架中提供了与@Component注解等效的三个注解 ...
- [原创]java WEB学习笔记103:Spring学习---Spring Bean配置:基于注解的方式(基于注解配置bean,基于注解来装配bean的属性)
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- spring IOC装配Bean(注解方式)
1 Spring的注解装配Bean (1) Spring2.5 引入使用注解去定义Bean @Component 描述Spring框架中Bean (2) Spring的框架中提供了与@Componen ...
- Spring常用注解,自动扫描装配Bean
1 引入context命名空间(在Spring的配置文件中),配置文件如下: xmlns:context="http://www.springframework.org/schema/con ...
- Spring学习笔记—装配Bean
在Spring中,对象无需自己负责查找或创建与其关联的其他对象.相反,容器负责把需要相互协作的对象引用赋予各个对象.创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入的本质. ...
- 自动装配Bean
Spring提供了几种技巧,可以减少XML的配置数量: 自动装配(autowiring):可以减少<property>(setter注入)和<constructor-arg>( ...
随机推荐
- 前端 高级 (二十五)vue2.0项目实战一 配置简要说明、代码简要说明、Import/Export、轮播和列表例子
一.启动服务自动打开浏览器运行 二.配置简要说明 1.node_modules 安装好的依赖文件,中间件等,所在位置 2.package.jason 配置当前项目要安装的中间件和依赖文件 { &quo ...
- Python基础理论 - 常用模块
time模块:时间戳.时间字符串.时间对象以及如何转换 random模块:随机小数.整数.区间,随机列表元素,打散列表 os模块:与操作系统交互的一个接口,os.path操作文件的路径 sys模块:s ...
- 关于Nginx设置端口号,在Asp.net 获取不到的,解决办法
不知道你有没有遇到过这样的问题,网站访客多起来后,心里很是高兴,加上了Nginx反向代理,出问题了 原来是这么写的: Request.Url.ToString() 输出是这样的: http://www ...
- 了解Serverless架构
1 概述 Serverless中文译为“无服务”是一种新兴起的架构模式,公司ESB产品引入Rest微服务服务机制过程,笔者刚好参与其中,其中Serverless作为一个新起的概念,跟微服务架构相关,为 ...
- Spring源码追踪1——doGetBean(为什么org.springframework.data.redis.core.RedisTemplate的实例可以注入为ListOperations)
类org.springframework.beans.factory.support.AbstractBeanFactory方法T doGetBean(final String name, final ...
- dubbo实用知识点总结(一)
1. dubbo基础架构 架构 特性 服务提供者 服务消费者 配置可以用dubbo.properties来替换 2. 注解配置 提供方(注意:serivce注解是dubbo的service) 消费者 ...
- 对List集合中的对象中的某个属性进行排序
今天在项目中遇到的问题,不能在sql中进行order by.所以将数据库中查询出来的集合,在java代码中进行排序 Collections.sort(list, new Comparator<H ...
- Python super() 函数的概念和例子
概念: super() 函数是用于调用父类(超类)的一个方法. super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO).重 ...
- Python编程Day7——字符编码、字符与字节、文件操作
一.字符编码 重点 ***** 1. 什么是字符编码:将人识别的字符转换计算机能识别的01,转换的规则就是字符编码表2. 常用的编码表:ascii.unicode.GBK.Shift_JIS.Euc- ...
- nginx介绍(一) 简介篇
Nginx(发音为"engine x")是一款由俄罗斯软件工程师Igor Sysoev年发布以来nginx一直关注于高性能.高并发.低内存的使用,另外还有一些特色的Web服务器功能 ...