spring开发_使用p名称空间配置属性

项目结构:

http://www.cnblogs.com/hongten/gallery/image/112563.html

/spring_1400_p名称空间/src/com/b510/app/test/SpringTest.java

 1 package com.b510.app.test;
2
3 import org.springframework.context.ApplicationContext;
4 import org.springframework.context.support.ClassPathXmlApplicationContext;
5
6 import com.b510.service.AnimalService;
7
8 public class SpringTest {
9 public static void main(String[] args) {
10 ApplicationContext act = new ClassPathXmlApplicationContext("beans.xml");
11 // 获取id为animaleServiceOfDog的Bean
12 AnimalService animalServiceOfDog = (AnimalService) act
13 .getBean("animaleServiceOfDog");
14 animalServiceOfDog.getInfo();
15 // 获取id为animaleServiceOfCat的Bean
16 AnimalService animalServiceOfCat = (AnimalService) act
17 .getBean("animaleServiceOfCat");
18 animalServiceOfCat.getInfo();
19 }
20 }

/spring_1400_p名称空间/src/com/b510/service/AnimalService.java

 1 package com.b510.service;
2
3 /**
4 * 动物抽象类
5 *
6 * @author Hongten
7 *
8 */
9 public interface AnimalService {
10
11 /**
12 * 获取相关信息
13 */
14 public abstract void getInfo();
15
16 }

/spring_1400_p名称空间/src/com/b510/service/MeatService.java

 1 package com.b510.service;
2
3 /**
4 * 定义抽象类MeatService肉类
5 *
6 * @author Hongten
7 *
8 */
9 public interface MeatService {
10
11 /**
12 * 定义方法whatMeat
13 *
14 * @return 返回一个字符串
15 */
16 public abstract String whatMeat();
17 }

/spring_1400_p名称空间/src/com/b510/service/impl/CatServiceBean.java

 1 package com.b510.service.impl;
2
3 import com.b510.service.AnimalService;
4 import com.b510.service.MeatService;
5
6 /**
7 * 定义猫类实现AnimaleService抽象类
8 *
9 * @author Hongten
10 *
11 */
12 public class CatServiceBean implements AnimalService {
13 private int age;
14 private MeatService meatService;
15
16 public int getAge() {
17 return age;
18 }
19
20 public void setAge(int age) {
21 this.age = age;
22 }
23
24 @Override
25 public void getInfo() {
26 System.out.println("我是猫,我的年龄是:"+age+",我很喜欢吃"+meatService.whatMeat());
27 }
28
29 public MeatService getMeatService() {
30 return meatService;
31 }
32
33 public void setMeatService(MeatService meatService) {
34 this.meatService = meatService;
35 }
36
37
38 }

/spring_1400_p名称空间/src/com/b510/service/impl/DogServiceBean.java

 1 package com.b510.service.impl;
2
3 import com.b510.service.AnimalService;
4 import com.b510.service.MeatService;
5
6 /**
7 * 定义DogServiceBean类
8 *
9 * @author Hongten
10 *
11 */
12 public class DogServiceBean implements AnimalService {
13 private int age;
14 private MeatService meatService;
15
16 public MeatService getMeatService() {
17 return meatService;
18 }
19
20 public void setMeatService(MeatService meatService) {
21 this.meatService = meatService;
22 }
23
24 public int getAge() {
25 return age;
26 }
27
28 public void setAge(int age) {
29 this.age = age;
30 }
31
32 @Override
33 public void getInfo() {
34 System.out.println("我是狗,我的年龄是:" + age + ",我很喜欢吃"
35 + meatService.whatMeat());
36 }
37
38 }

/spring_1400_p名称空间/src/com/b510/service/impl/FishServiceBean.java

 1 package com.b510.service.impl;
2
3 import com.b510.service.MeatService;
4
5 /**
6 * 定义鱼肉实现MeatService抽象类
7 *
8 * @author Hongten
9 *
10 */
11 public class FishServiceBean implements MeatService {
12
13 @Override
14 public String whatMeat() {
15 return "鱼肉";
16 }
17
18 }

/spring_1400_p名称空间/src/com/b510/service/impl/PorkServiceBean.java

 1 package com.b510.service.impl;
2
3 import com.b510.service.MeatService;
4
5 /**
6 * 定义猪肉实现MeatService抽象类
7 *
8 * @author Hongten
9 *
10 */
11 public class PorkServiceBean implements MeatService {
12
13 @Override
14 public String whatMeat() {
15 return "猪肉";
16 }
17
18 }

/spring_1400_p名称空间/src/beans.xml

 1 <?xml version="1.0" encoding="GBK"?>
2 <!-- Spring配置文件的根元素,使用spring-beans-3.0.xsd语义约束 -->
3 <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p"
5 xsi:schemaLocation="http://www.springframework.org/schema/beans
6 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
7 <bean id="meatServiceOfFish" class="com.b510.service.impl.FishServiceBean"></bean>
8 <bean id="meatServiceOfPork" class="com.b510.service.impl.PorkServiceBean"></bean>
9 <bean id="animaleServiceOfDog" class="com.b510.service.impl.DogServiceBean"
10 p:age="12" p:meatService-ref="meatServiceOfPork" />
11 <bean id="animaleServiceOfCat" class="com.b510.service.impl.CatServiceBean"
12 p:age="3" p:meatService-ref="meatServiceOfFish" />
13 </beans>

使用p名称空间没有标准的XML格式灵活,如果某个Bean的属性名称是以"-ref"结尾的,那么采用p名称空间定义是就会出现错误,采用标准的XML格式是

不会出现这样的错误滴!!!

运行结果:

 

 1 2012-3-12 12:58:51 org.springframework.context.support.AbstractApplicationContext prepareRefresh
2 信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@c1b531: display name [org.springframework.context.support.ClassPathXmlApplicationContext@c1b531]; startup date [Mon Mar 12 12:58:51 CST 2012]; root of context hierarchy
3 2012-3-12 12:58:51 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
4 信息: Loading XML bean definitions from class path resource [beans.xml]
5 2012-3-12 12:58:54 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
6 信息: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@c1b531]: org.springframework.beans.factory.support.DefaultListableBeanFactory@111a775
7 2012-3-12 12:58:54 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
8 信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@111a775: defining beans [meatServiceOfFish,meatServiceOfPork,animaleServiceOfDog,animaleServiceOfCat]; root of factory hierarchy
9 我是狗,我的年龄是:12,我很喜欢吃猪肉
10 我是猫,我的年龄是:3,我很喜欢吃鱼肉


posted @ 2012-03-12 13:16  Hongten  阅读(2881)  评论(0编辑  收藏  举报
Fork me on GitHub