您的位置:首页 > 编程语言 > Java开发

Spring bean 设值注入和 构造注入

2016-06-27 16:40 495 查看
关于 Spring的 xml的写法 在 官方文档的 


6.2.1 Configuration metadata里面有。

beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 
<bean id="chinese" class="com.han.chinese">
<!-- collaborators and configuration for this bean go here -->
<property name="name" value="邱于涵" />
<property name="age" value="18" />
<property name="Language" value="中文" />
</bean>

<bean id="chinesewithconstructor" class="com.han.chinesewithconstuctor">
<constructor-arg value="邱于涵"></constructor-arg>
<constructor-arg value="19" ></constructor-arg>
<constructor-arg value="中文"></constructor-arg>
</bean>
</beans>


chinese.java
package com.han;
/*******************************
*   设置注入
*   CopyRight(C)2016-6-27 16:34:40
*   Author:邱于涵
* ************************************/
public class chinese {
private String name;
private int age;
private String Language;
public chinese(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getLanguage() {
return Language;
}
public void setLanguage(String language) {
Language = language;
}

}


chinesewithconstructor.java
package com.han;
/*********************
* 构造注入
* CopyRight(C)2016-6-27 16:35:09
* Author:邱于涵
* *******************************/

public class chinesewithconstuctor {
private String name;
private int age;
private String Language;
public chinesewithconstuctor(String name,int age,String language)
{
this.name=name;
this.age=age;
this.Language=language;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getLanguage() {
return Language;
}
public void setLanguage(String language) {
Language = language;
}

}


Entry.java
package com.han;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Entry {
public static void main(String []args)
{
ApplicationContext act=new ClassPathXmlApplicationContext("beans.xml");
chinese p1=(chinese)act.getBean("chinese");
System.out.println("姓名:"+p1.getName()+"年龄:"+p1.getAge()+"语言:"+p1.getLanguage());

/******************下面是构造注入的例子****************************/
chinesewithconstuctor p2=(chinesewithconstuctor)act.getBean("chinesewithconstructor");
System.out.println("姓名:"+p2.getName()+"年龄:"+p2.getAge()+"语言:"+p2.getLanguage());
}

}
如果出现下面错误就是 缺少commons-logging 包
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:159)
at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:223)
at org.springframework.context.support.AbstractRefreshableApplicationContext.<init>(AbstractRefreshableApplicationContext.java:88)
at org.springframework.context.support.AbstractRefreshableConfigApplicationContext.<init>(AbstractRefreshableConfigApplicationContext.java:58)
at org.springframework.context.support.AbstractXmlApplicationContext.<init>(AbstractXmlApplicationContext.java:61)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:136)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at com.han.Entry.main(Entry.java:9)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

这个是缺少 commons-logging-1.2.jar 日志包


下面是运行结果:
六月 27, 2016 4:34:08 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@1a77460: startup date [Mon Jun 27 16:34:08 CST 2016]; root of context hierarchy
六月 27, 2016 4:34:08 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [beans.xml]
姓名:邱于涵年龄:18语言:中文
姓名:邱于涵年龄:19语言:中文
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: