p命名空间注入

p命名空间注入的特点是使用属性而不是子元素的形式配置Bean的属性,从而简化了配置代码。

使用前要在spring配置文件中引入p命名空间

xmlns:p="http://www.springframework.org/schema/p"

下面看示例:

biz里面要有setter访问器(与设值注入的代码相同)

1.biz代码

 1         //上面是以前的方法
 2     private IUserDao dao;
 3     public IUserDao getDao() {
 4         return dao;
 5     }
 6     //专业注入
 7     //dao的set访问器,会被spring调用,实现设值注入
 8     public void setDao(IUserDao dao) {
 9         this.dao = dao;
10     }

2.在dao里面添加代码

 1 package com.dao.impl;
 2
 3 import com.dao.IUserDao;
 4 import com.domain.User;
 5
 6 public class IUserDaoImpl implements IUserDao {
 7
 8     @Override
 9     public void save(User user) {
10         // TODO Auto-generated method stub
11         System.out.println("哇塞,保存用户信息了");
12
13         System.out.println("用户名是:"+user.getUname());
14         System.out.println("邮箱是:"+user.getEmail());
15     }
16
17 }

3.配置spring配置文件

1 <!-- 给属性赋值 -->
2     <bean id="users" class="com.domain.User" p:email="[email protected]" p:uname="大师兄"></bean>
3     <bean id="udao" class="com.dao.impl.IUserDaoImpl"></bean>
4     <!-- 引入udao -->
5     <bean id="biz" class="com.biz.impl.IUserBizImpl" p:dao-ref="udao"></bean>
6     

4.测试类

 1 package com.test;
 2
 3 import org.springframework.context.ApplicationContext;
 4 import org.springframework.context.support.ClassPathXmlApplicationContext;
 5
 6 import com.biz.IUserBiz;
 7 import com.domain.User;
 8
 9 /**
10  *
11  * @author Mr
12  * aop测试类
13  */
14 public class Test {
15
16     public static void main(String[] args) {
17         //解析配置文件
18         ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
19
20         IUserBiz biz = (IUserBiz) ac.getBean("biz");        //users来自于spring配置文件
21         User users = (User) ac.getBean("users");
22         biz.save(users);
23     }
24
25 }

5.测试效果

时间: 2024-10-11 01:53:09

p命名空间注入的相关文章

spring之p命名空间注入

<bean id="personId" class="com.itheima.f_xml.c_p.Person" p:pname="禹太璞" p:age="22" p:homeAddr-ref="homeAddrId" p:companyAddr-ref="companyAddrId"> </bean> <bean id="homeAddrId&q

Spring的学习_______4.各种参数类型的依耐注入(DI)测试以及P命名空间的注入和C命名空间的注入

(本案例为:Idea下的maven项目) 1.实体类的编写: Student.java public class Student { private String name; private Address address; private String[] books; private List<String> hobbys; private Map<String,String> cards; private Set<String> games; private St

Spring-IOC:xml注入、构造器赋值、P/C命名空间

通过容器注册Bean 容器中注册Bean 新建我们的person类,写入无参 有参 get/set方法 public class Person { private String lastName; private String gender; private Integer age; private String email; /* 有参无参 get/set 这里我进行了省略 */ } 新建ioc.xml 这是我们的ioc容器配置文件,注入我们的第一个bean <?xml version="

JS命名空间模式解析

简介 在SF上看到这样一个提问: 如题,因为不得已的原因,需要写若干个全局函数.但又不想这样: window.a = function(){} window.b = function(){} window.c = function(){} 题主问有什么好的写法? 解答: 如果你用 jQuery,你可以这样写 $.extend(window, { a: function() {}, b: function() {}, c: function() {} }); 如果你不用 jQuery,可以直接实现

Spring注入(IOC):

简单来说就是减少层与层之间的耦合关系,本来在service调用dao要new,有了这个就可以通过注入的方式,相当与把所有的new操作都变成了在配置文件中配置,有改动时直接改配置就行了不用一个个java文件去改. 1.搭建web项目,导入spring核心包.copy到web目录lib即可. 项目的构成: 1.首先是创建一个bean.省略setter.getter public class UserBean{ private String userName; private int age; pri

spring构造注入

Sping 结构体系结构4个核心组件 Beans:Bean是包装我们应用程序自定义对象Object的bject存有数据. Core: context在发现建立,维护Bean之间关系所需的一些工具.如资源的加载,资源的抽象等. Context:context就是一个Bean关系的集合. Expression : spring表达式语言. 构造注入: 前提的有构造 //学生类 public class Student {    @Override    public String toString(

JavaScript 中的命名空间

全局变量应该由有系统范围相关性的对象们保留,并且它们的命名应该避免含糊并尽量减少命名冲突的风险.在实践中,这意味着你应该避免创建全局对象,除非它们是绝对必须的. 所以你对此是怎么做的?传统方法告诉我们,最好的消除全局策略是创建少数作为潜在模块和子系统的实际命名空间的全局对象.我将探索几种有关命名空间的方式,并以我基于 James Edwards 最近的一篇文章得到的一个优雅.安全和灵活的解决方案结束. 静态命名空间 我用静态命名空间作为那些命名空间标签实际上硬编码的解决方案的涵盖性术语.是的,你

IOC和AOP使用扩展 多种方式实现依赖注入

多种方式实现依赖注入 1.Spring 使用setter访问器实现对属性的赋值, 2.Spring 构造constructor方法赋值, 3.接口注入 4.Spring P命名空间注入直接量 setter访问器实现方式following 实体类中设置属性的set访问器 1 public class Equip { 2 private String name; //装备名称 3 public String getName() { 4 return name; 5 } 6 public void s

Spring(四)Bean注入方试

一.构造方法注入 定义:通过构造函数来完成依赖关系的设定 优缺点: 在构造对象的同时,完成依赖关系的建立 如果关联的对象很多,那和不得不在构造方法上加入过多的参数 基中有index:如果指定索引从0开始,type用来指定类型 实体类: package com.pb.entity; /** * 班级类 * @author Administrator * */ public class Grade { private int id; //班级编号 private String name; //班级名