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#类似.从模块开始就需要深入的去理解了 文档反复声明了 内部模块现在称做 命令空间 外部模块称为 模块 模块在其自身的作用域里执行,而不是在全局作用域里,也就是说 ...
随机推荐
- 【POJ 2942】Knights of the Round Table(点双连通分量,二分图染色)
圆桌会议必须满足:奇数个人参与,相邻的不能是敌人(敌人关系是无向边). 求无论如何都不能参加会议的骑士个数.只需求哪些骑士是可以参加的. 我们求原图的补图:只要不是敌人的两个人就连边. 在补图的一个奇 ...
- ActiveMQ;RabbitMQ;ZeroMQ
中间件类型: Embedded middleware: As the name suggests, this typeof middleware handles embedded applicatio ...
- OPENGL的入门第一个程序——Hello World
#include "stdafx.h" #include<GL\glut.h> void Init() { glClearColor(0.0f,0.0f,0.0f,0. ...
- 【BZOJ-4636】蒟蒻的数列 动态开点线段树 ||(离散化) + 标记永久化
4636: 蒟蒻的数列 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 247 Solved: 113[Submit][Status][Discuss ...
- 使用Jayrock开源组件开发基于JSON-RPC协议的接口
最近接手一个以前的项目,无意间发现此项目开发接口的组件:Jayrock(接口组件估计用的少,用的最多的估计是这个Jayrock.json.dll,用于解析json) 以下是Jayrock的介绍官网: ...
- libusb-win32简介~
libusb-win32简介 libusb-win32 is a port of the USB library libusb (http://sf.net/projects/libusb/) to ...
- string字符串的一系列操作
IndexOf() 查找字串中指定字符或字串首次出现的位置,返首索引值,如: str1.IndexOf("字"): //查找“字”在str1中的索引值(位置) str1.Index ...
- HDU 5761 Rower Bo
传送门 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Special Jud ...
- 对WEB标准以及W3C的理解与认识
按照习惯的理解,这两个概念似乎都是指的一个东西(就是咱们在这个版里讨论的这些个"高深理论“^_^).但我认为,事实上从技术的角度上讲,这两个事物几乎没有任何相关性.web标准简而言之就是将页 ...
- [TYVJ]1519 博彩
传送门 AC自动机模板题,好吧我只是单纯的搞个AC自动机的模板. //TYVJ 1519 //by Cydiater //2016.10.18 #include <iostream> #i ...