摘要: 这是一个Spring 多配置文件与国际化的示例。
这是一个Spring使用资源文件的实例。
package exm.spring.bean;
public class Student {
private String id;
private String name;
private String sex;
private String grade;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String id, String name, String sex, String grade) {
super();
this.id = id;
this.name = name;
this.sex = sex;
this.grade = grade;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", sex=" + sex
+ ", grade=" + grade + "]";
}
}
package exm.spring.bean;
public class Screen {
public Screen(){}
public void print(Student student)
{
System.out.println(student.getId()+" "+
student.getName()+" "+student.getSex()+" "+student.getGrade());
}
}
package exm.spring.test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Locale;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.Resource;
import exm.spring.bean.Screen;
import exm.spring.bean.Student;
public class Test {
@org.junit.Test
public void test()
{
/**
* Spring加载多个配置文件
*/
ApplicationContext ac = new ClassPathXmlApplicationContext("beans1.xml","beans2.xml");
Student student = ac.getBean("student", Student.class);
Screen screen = ac.getBean("screen",Screen.class);
screen.print(student);
/**
* 让spring从指定路径加载资源
* 1、classpath:从类加载路径加载
* 2、ftp: 从网络加载,基于FTP协议
* 3、http: 从网络加载,基于HTTP协议
*/
try
{
//message.txt放在在src文件夹下
Resource resource = ac.getResource("classpath:message.txt");
BufferedReader br =
new BufferedReader(new InputStreamReader(resource.getInputStream()));
String line = null;
while((line = br.readLine()) != null)
{
System.out.println("---------"+line+"----------");
}
}
catch(Exception e)
{
e.printStackTrace();
}
/**
* 使用国际化资源文件
* 该方法的三个参数分别是:
* 1、对应资源文件的key
* 2、对应的占位符
* 3、使用的locale,如果要使用用户操作系统的locale,则Locale.getDefault()
*/
System.out.println(ac.getMessage("hello", new String[]{student.getName()}, Locale.CHINA));
System.out.println(ac.getMessage("welcome", new String[]{student.getName()}, Locale.US));
}
}
<!-- 配置文件1 -->
<?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="screen" class="exm.spring.bean.Screen">
</bean>
<!-- 这个bean负责加载国际化资源文件 -->
<bean id="messageResource" class="org.springframework.context.support.ResourceBundleMessageSource">
<!-- 相当于调用方法:setBasenames(String... basenames) -->
<property name="basenames">
<list>
<value>message</value>
</list>
</property>
</bean>
</beans>
<!-- 配置文件2 -->
<?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="student" class="exm.spring.bean.Student">
<constructor-arg name="id" value="11303080423"/>
<constructor-arg name="name" value="林金智"/>
<constructor-arg name="sex" value="男"/>
<constructor-arg name="grade" value="384"/>
</bean>
</beans>
© 著作权归作者所有