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="mr_myh@126.com" 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.测试效果