p命名空间的使用(不推荐用)
xmlns:p="http://www.springframework.org/schema/p"
p:没有xsd文件,直接加上面那句就好了
<!-- singleton和prototype -->
<bean id="user" class="com.bdqn.entity.User" scope="prototype">
<property name="username" value="admin"></property>
<property name="password" value="123"></property>
</bean>
<!-- p -->
<bean id="user_p" class="com.bdqn.entity.User"
p:username="admin" p:password="123"></bean>
public class testScope {
@Test
public void test() {
//默任singleton
ApplicationContext ctx= new ClassPathXmlApplicationContext(
"applicationContext.xml");
//客户端1拿到的东西
User user = ctx.getBean("user_p",User.class);
System.out.println(user.getUsername());//admin
user.setUsername(user.getUsername()+"1");
//客户端2拿到的东西(对唯一实例的修改)
User user2 = ctx.getBean("user_p",User.class);
System.out.println(user2.getUsername());//admin1
user2.setUsername(user.getUsername()+"2");
//客户端3拿到的东西(对唯一实例的修改)
User user3 = ctx.getBean("user_p",User.class);
System.out.println(user3.getUsername());//admin12
System.out.println(user==user2);//true
System.out.println(user==user3);//true
}
}
自动装配
<!-- 自动装配 -->
<bean id="userDao" class="com.bdqn.dao.UserDaoImpl"></bean>
<bean id="userService" class="com.bdqn.service.UserService">
<bean id="dao" class="com.bdqn.dao.UserDaoImpl"></bean>
<bean id="userService2" class="com.bdqn.service.UserService"
autowire="byName"> </bean>
test类
public class TestAutowire {
@Test
public void test() {
ApplicationContext ctx= new ClassPathXmlApplicationContext(
"applicationContext.xml");
UserService service =(UserService)ctx.getBean("userService2");
service.save();
}
}
当 autowire="no"时,
默认值,spring默认不进行自动装配,必须显示指定依赖对象
当 autowire="byName"时,输出保存----找属性
根据属性名自动装配,spring自动查找与属性名相同的id
如果找到,则自动注入,否则什么都不做
当 autowire="byType"时,就得删了2个中class相同的一个bean。没有删除就会提示出,找到2个----找属性
根据属性的类型自动装配,spring自动查找与属性类型相同的bean,如果刚好找到唯一的那个,则自动注入
如果找到多个与属性类型相同的Bean,则跑出异常,如果没找到,就什么也不做
当 autowire="constructor"时,---直接找构造方法
和byType类似,不过它针对构造方法,如果spring找到一个Bean和构造方法的参数类型相匹配,则通过构造注入
该依赖对象,如果找不到,就抛出异常
<!-- 自动装配,里面的装配都不需要写
注意必须满足2点:1、UserServiceImpl.java里的属性名必须和applicationContext.xml里对应的bean id的名字相同
2、 在声明里配置一个属性autowire="byName"(通过名字自动装配)也就是说:cn.bdqn.biz.service.impl.UserServiceImpl的属性名与bean的id名称相同就会自动装配-->
<!--
<bean id="userServiceImpl" class="cn.bdqn.biz.service.impl.UserServiceImpl" autowire="byName"/>
<bean id="userDao" class="cn.bdqn.biz.dao.impl.UserDaoImpl"/>
--> <!-- autowire="byType" 自动装配类型,根据类型自动装配,类型不能相同
也就是说:cn.bdqn.biz.service.impl.UserServiceImpl的属性类型与bean中有相同的类型的时候就会自动装配
注:不可以有相同的类型,也就是说不可以有相同的类名存在,ID可有可无,但是一般情况下是存在的,它与其他没有关联-->
<!--
<bean id="userServiceImpl" class="cn.bdqn.biz.service.impl.UserServiceImpl" autowire="byType"/>
<bean id="userDaoImpl" class="cn.bdqn.biz.dao.impl.UserDaoImpl"/>
--> <!-- autowire="constructor" 根据类型自动装配,根据构造器的参数显示
18 也就是说:cn.bdqn.biz.service.impl.UserServiceImpl的属性类型与bean中有相同的类型的时候就会自动装配
19 注:执行这个xml的时候,要有构造函数(有参)若容器中没找到与构造器参数类型一致的bean,则抛出异常-->
p命名空间的使用(不推荐用)的更多相关文章
- TypeScript 素描 - 模块、命名空间
/* 其实前面一些都是废话,因为都和C#类似.从模块开始就需要深入的去理解了 文档反复声明了 内部模块现在称做 命令空间 外部模块称为 模块 模块在其自身的作用域里执行,而不是在全局作用域里,也就是说 ...
- .NET单元测试的艺术-3.测试代码
开篇:上一篇我们学习单元测试和核心技术:存根.模拟对象和隔离框架,它们是我们进行高质量单元测试的技术基础.本篇会集中在管理和组织单元测试的技术,以及如何确保在真实项目中进行高质量的单元测试. 系列目录 ...
- js正则表达式语法
1. 正则表达式规则 1.1 普通字符 字母.数字.汉字.下划线.以及后边章节中没有特殊定义的标点符号,都是"普通字符".表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的 ...
- 【JavaScript中的正则表达式】
原文地址:http://blog.csdn.net/xh16319/article/details/9987847 1. 正则表达式规则 1.1 普通字符 字母.数字.汉字.下划线.以及后边章节中没有 ...
- Spring(四)Bean注入方试
一.构造方法注入 定义:通过构造函数来完成依赖关系的设定 优缺点: 在构造对象的同时,完成依赖关系的建立 如果关联的对象很多,那和不得不在构造方法上加入过多的参数 基中有index:如果指定索引从0开 ...
- JS 自定义正则表达式
1. 正则表达式规则 1.1 普通字符 字母.数字.汉字.下划线.以及后边章节中没有特殊定义的标点符号,都是"普通字符".表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的 ...
- jquery 新建的元素事件绑定问题
js的事件监听跟css不一样,css只要设定好了样式,不论是原来就有的还是新添加的,都有一样的表现.而事件监听不是,你必须给每一个元素单独绑定事件. 常见的例子是处理表格的时候.每行行末有个删除按钮, ...
- js正則表達式语法
1. 正則表達式规则 1.1 普通字符 字母.数字.汉字.下划线.以及后边章节中没有特殊定义的标点符号,都是"普通字符".表达式中的普通字符,在匹配一个字符串的时候,匹配与之同样的 ...
- TypeScript 素描 - 模块
/* 其实前面一些都是废话,因为都和C#类似.从模块开始就需要深入的去理解了 文档反复声明了 内部模块现在称做 命令空间 外部模块称为 模块 模块在其自身的作用域里执行,而不是在全局作用域里,也就是说 ...
随机推荐
- wordpress模板各文件函数解析
修改主题时发现好多WordPress主题函数都不了解,因此网上摘抄了一份放在自己博客上,便于以后好找. 在WordPress中如何按你的意愿显示页面,关键看你是否了解WordPress主题模板页面.这 ...
- 【POJ 1389】Area of Simple Polygons(线段树+扫描线,矩形并面积)
离散化后,[1,10]=[1,3]+[6,10]就丢了[4,5]这一段了. 因为更新[3,6]时,它只更新到[3,3],[6,6]. 要么在相差大于1的两点间加入一个值,要么就让左右端点为l,r的线段 ...
- KVC、KVO、NSNotification、delegate 总结及区别
1.KVC,即是指 NSKeyValueCoding,一个非正式的Protocol,提供一种机制来间接访问对象的属性.而不是通过调用Setter.Getter方法访问.KVO 就是基于 KVC 实现的 ...
- 欢迎加入.Net高级部落 173844862
本群成立至今3年多,聚集了好多大牛级别的人物,欢迎高手前来指教,也欢迎小菜鸟进来学习.群成员热情开朗,有问必答.在这里聊聊技术,谈谈理想,不光技术会得到提高,也会收获一大帮志同道合的朋友,希望在未来的 ...
- 细说new与malloc的10点区别
前言 几个星期前去面试C++研发的实习岗位,面试官问了个问题: new与malloc有什么区别? 这是个老生常谈的问题.当时我回答new从自由存储区上分配内存,malloc从堆上分配内存:new/de ...
- CA 证书
1.ubuntu curl 命令报错(CA) kamil@vm-ubuntu:~$ curl https://szxyzs.vanke.com/DataCenter/datacenter/api cu ...
- Oracle触发器实例(网搜)
触发器使用教程和命名规范 目 录触发器使用教程和命名规范 11,触发器简介 12,触发器示例 23,触发器语法和功能 34,例一:行级触发器之一 45,例二:行级触发器之二 46,例三:INSTEA ...
- MVC重写DefaultModelBinder实现自定义模型绑定
在编写前台页面的时候为了使url传递参数的简短,比如personId="1" 我们通过url传递成pid=1 那么在后台action方法接受的模型Person类 的属性为per ...
- hdu 5147 树状数组
题意:求满足a<b<c<d,A[a]<A[b],A[c]<A[d]的所有四元组(a,b,c,d)的个数 看到逆序对顺序对之类的问题一开始想到了曾经用归并排序求逆序对,结果 ...
- xml解析模块
XML XML是可扩展标记语言的缩写,是实现不同语言或程序之间进行数据交换的协议,主要可以对key添加属性. 页面做展示(字符类型的一个xml格式数据)\做配置文件(内部xml格式的数据).,每一个节 ...