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命名空间的使用(不推荐用)的更多相关文章

  1. TypeScript 素描 - 模块、命名空间

    /* 其实前面一些都是废话,因为都和C#类似.从模块开始就需要深入的去理解了 文档反复声明了 内部模块现在称做 命令空间 外部模块称为 模块 模块在其自身的作用域里执行,而不是在全局作用域里,也就是说 ...

  2. .NET单元测试的艺术-3.测试代码

    开篇:上一篇我们学习单元测试和核心技术:存根.模拟对象和隔离框架,它们是我们进行高质量单元测试的技术基础.本篇会集中在管理和组织单元测试的技术,以及如何确保在真实项目中进行高质量的单元测试. 系列目录 ...

  3. js正则表达式语法

    1. 正则表达式规则 1.1 普通字符 字母.数字.汉字.下划线.以及后边章节中没有特殊定义的标点符号,都是"普通字符".表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的 ...

  4. 【JavaScript中的正则表达式】

    原文地址:http://blog.csdn.net/xh16319/article/details/9987847 1. 正则表达式规则 1.1 普通字符 字母.数字.汉字.下划线.以及后边章节中没有 ...

  5. Spring(四)Bean注入方试

    一.构造方法注入 定义:通过构造函数来完成依赖关系的设定 优缺点: 在构造对象的同时,完成依赖关系的建立 如果关联的对象很多,那和不得不在构造方法上加入过多的参数 基中有index:如果指定索引从0开 ...

  6. JS 自定义正则表达式

    1. 正则表达式规则 1.1 普通字符 字母.数字.汉字.下划线.以及后边章节中没有特殊定义的标点符号,都是"普通字符".表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的 ...

  7. jquery 新建的元素事件绑定问题

    js的事件监听跟css不一样,css只要设定好了样式,不论是原来就有的还是新添加的,都有一样的表现.而事件监听不是,你必须给每一个元素单独绑定事件. 常见的例子是处理表格的时候.每行行末有个删除按钮, ...

  8. js正則表達式语法

    1. 正則表達式规则 1.1 普通字符 字母.数字.汉字.下划线.以及后边章节中没有特殊定义的标点符号,都是"普通字符".表达式中的普通字符,在匹配一个字符串的时候,匹配与之同样的 ...

  9. TypeScript 素描 - 模块

    /* 其实前面一些都是废话,因为都和C#类似.从模块开始就需要深入的去理解了 文档反复声明了 内部模块现在称做 命令空间 外部模块称为 模块 模块在其自身的作用域里执行,而不是在全局作用域里,也就是说 ...

随机推荐

  1. 系统间通信(8)——通信管理与RMI 上篇

    1.概述 在概述了数据描述格式的基本知识.IO通信模型的基本知识后.我们终于可以进入这个系列博文的重点:系统间通信管理.在这个章节我将通过对RMI的详细介绍,引出一个重要的系统间通信的管理规范RPC, ...

  2. Linux的vim三种模式及命令

    一般模式:在Linux终端中输入"vim 文件名"就进入了一般模式,但不能输入文字.编辑模式:在一般模式下按i就会进入编辑模式,此时就可以写程式,按Esc可回到一般模式. 命令模式 ...

  3. 【BZOJ-1391】order 最小割 + 最大全闭合图

    1391: [Ceoi2008]order Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1334  Solved: 405[Submit][Statu ...

  4. codevs3305 水果姐逛水果街Ⅱ

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...

  5. struts2 Advanced Learning

    catalog . 引言 . struts2的类型转换 . struts2的输入校验 . struts2的拦截器机制 . 使用struts2的Ajax支持 . struts2 OGNL表达式 . st ...

  6. ubuntu14.04 gedit显示GB2312中文编码

    在中文支持配置还不完整的Ubuntu 14.04中,使用gedit打开带有中文字符的文件有时会出现乱码的情况,这是由于gedit对字符编码匹配不正确导致的,解决方法如下: 在终端中输入如下命令,然后重 ...

  7. 基本概率分布Basic Concept of Probability Distributions 3: Geometric Distribution

    PDF version PMF Suppose that independent trials, each having a probability $p$, $0 < p < 1$, o ...

  8. [Android]Unit Test for Android

    根据Android Developer文档,对Android的UT做个学习总结: 1. 搭建Eclipse测试环境. Eclipse的ADT(Android Developer Tools) 插件为我 ...

  9. Unable to execute dex: java.nio.BufferOverflowException.解决办法

    异常提示: [2014-01-16 09:27:35 - Dex Loader] Unable to execute dex: java.nio.BufferOverflowException. Ch ...

  10. 【Alpha版本】 第五天 11.11

    一.站立式会议照片: 二.项目燃尽图: 三.项目进展: 成 员 昨天完成任务 今天完成任务 周末+下周一要做任务 问题困难 心得体会 胡泽善 完成了账户信息修改界面 完成管理员的三大界面框架.完成管理 ...