diff --git a/spring-core/src/main/java/com/baeldung/applicationcontext/Course.java b/spring-core/src/main/java/com/baeldung/applicationcontext/Course.java new file mode 100644 index 0000000000..e67d99efb4 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/applicationcontext/Course.java @@ -0,0 +1,21 @@ +package com.baeldung.applicationcontext; + +public class Course { + + private String name; + + public Course() { + } + + public Course(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/spring-core/src/main/java/com/baeldung/applicationcontext/Dialog.java b/spring-core/src/main/java/com/baeldung/applicationcontext/Dialog.java new file mode 100644 index 0000000000..53688598da --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/applicationcontext/Dialog.java @@ -0,0 +1,43 @@ +package com.baeldung.applicationcontext; + +import java.util.Locale; + +public class Dialog { + + private Locale locale; + private String hello; + private String thanks; + + public Dialog() { + } + + public Dialog(Locale locale, String hello, String thanks) { + this.locale = locale; + this.hello = hello; + this.thanks = thanks; + } + + public Locale getLocale() { + return locale; + } + + public void setLocale(Locale locale) { + this.locale = locale; + } + + public String getHello() { + return hello; + } + + public void setHello(String hello) { + this.hello = hello; + } + + public String getThanks() { + return thanks; + } + + public void setThanks(String thanks) { + this.thanks = thanks; + } +} diff --git a/spring-core/src/main/java/com/baeldung/applicationcontext/Student.java b/spring-core/src/main/java/com/baeldung/applicationcontext/Student.java new file mode 100644 index 0000000000..fcfcb6f386 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/applicationcontext/Student.java @@ -0,0 +1,35 @@ +package com.baeldung.applicationcontext; + +public class Student { + + private int no; + private String name; + + public Student() { + } + + public Student(int no, String name) { + this.no = no; + this.name = name; + } + + public int getNo() { + return no; + } + + public void setNo(int no) { + this.no = no; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public void destroy() { + System.out.println("Student(no: " + no + ") is destroyed"); + } +} diff --git a/spring-core/src/main/java/com/baeldung/applicationcontext/Teacher.java b/spring-core/src/main/java/com/baeldung/applicationcontext/Teacher.java new file mode 100644 index 0000000000..7ef802a3d6 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/applicationcontext/Teacher.java @@ -0,0 +1,39 @@ +package com.baeldung.applicationcontext; + +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.PostConstruct; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; + +public class Teacher { + + @Autowired + private ApplicationContext context; + private List courses = new ArrayList<>(); + + public Teacher() { + } + + @PostConstruct + public void addCourse() { + if (context.containsBean("math")) { + Course math = context.getBean("math", Course.class); + courses.add(math); + } + if (context.containsBean("physics")) { + Course physics = context.getBean("physics", Course.class); + courses.add(physics); + } + } + + public List getCourses() { + return courses; + } + + public void setCourses(List courses) { + this.courses = courses; + } +} diff --git a/spring-core/src/main/resources/classpathxmlapplicationcontext-example.xml b/spring-core/src/main/resources/classpathxmlapplicationcontext-example.xml new file mode 100644 index 0000000000..6b898ad11e --- /dev/null +++ b/spring-core/src/main/resources/classpathxmlapplicationcontext-example.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-core/src/main/resources/classpathxmlapplicationcontext-internationalization.xml b/spring-core/src/main/resources/classpathxmlapplicationcontext-internationalization.xml new file mode 100644 index 0000000000..fcc09766f9 --- /dev/null +++ b/spring-core/src/main/resources/classpathxmlapplicationcontext-internationalization.xml @@ -0,0 +1,14 @@ + + + + + + + dialog/dialog + + + + \ No newline at end of file diff --git a/spring-core/src/main/resources/dialog/dialog_en.properties b/spring-core/src/main/resources/dialog/dialog_en.properties new file mode 100644 index 0000000000..cf65b8990e --- /dev/null +++ b/spring-core/src/main/resources/dialog/dialog_en.properties @@ -0,0 +1,3 @@ +hello=hello +you=you +thanks=thank {0} \ No newline at end of file diff --git a/spring-core/src/main/resources/dialog/dialog_zh_CN.properties b/spring-core/src/main/resources/dialog/dialog_zh_CN.properties new file mode 100644 index 0000000000..ab09c8b39f --- /dev/null +++ b/spring-core/src/main/resources/dialog/dialog_zh_CN.properties @@ -0,0 +1,3 @@ +hello=\u4f60\u597d +you=\u4f60 +thanks=\u8c22\u8c22{0} \ No newline at end of file diff --git a/spring-core/src/test/java/com/baeldung/applicationcontext/ClasspathXmlApplicationContextTest.java b/spring-core/src/test/java/com/baeldung/applicationcontext/ClasspathXmlApplicationContextTest.java new file mode 100644 index 0000000000..8ee280a2e8 --- /dev/null +++ b/spring-core/src/test/java/com/baeldung/applicationcontext/ClasspathXmlApplicationContextTest.java @@ -0,0 +1,59 @@ +package com.baeldung.applicationcontext; + +import static org.hamcrest.core.IsEqual.equalTo; +import static org.junit.Assert.assertThat; + +import java.util.List; +import java.util.Locale; + +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.MessageSource; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class ClasspathXmlApplicationContextTest { + @Test + public void testBasicUsage() { + ApplicationContext context = new ClassPathXmlApplicationContext("classpathxmlapplicationcontext-example.xml"); + Student student = (Student) context.getBean("student"); + assertThat(student.getNo(), equalTo(15)); + assertThat(student.getName(), equalTo("Tom")); + + Student sameStudent = context.getBean("student", Student.class);// do not need cast class + assertThat(sameStudent.getNo(), equalTo(15)); + assertThat(sameStudent.getName(), equalTo("Tom")); + } + + @Test + public void testRegisterShutdownHook() { + ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("classpathxmlapplicationcontext-example.xml"); + context.registerShutdownHook(); + } + + @Test + public void testInternationalization() { + MessageSource resources = new ClassPathXmlApplicationContext("classpathxmlapplicationcontext-internationalization.xml"); + + String enHello = resources.getMessage("hello", null, "Default", Locale.ENGLISH); + String enYou = resources.getMessage("you", null, Locale.ENGLISH); + String enThanks = resources.getMessage("thanks", new Object[] { enYou }, Locale.ENGLISH); + assertThat(enHello, equalTo("hello")); + assertThat(enThanks, equalTo("thank you")); + + String chHello = resources.getMessage("hello", null, "Default", Locale.SIMPLIFIED_CHINESE); + String chYou = resources.getMessage("you", null, Locale.SIMPLIFIED_CHINESE); + String chThanks = resources.getMessage("thanks", new Object[] { chYou }, Locale.SIMPLIFIED_CHINESE); + assertThat(chHello, equalTo("你好")); + assertThat(chThanks, equalTo("谢谢你")); + } + + @Test + public void testApplicationContextAware() { + ApplicationContext context = new ClassPathXmlApplicationContext("classpathxmlapplicationcontext-example.xml"); + Teacher teacher = context.getBean("teacher", Teacher.class); + List courses = teacher.getCourses(); + assertThat(courses.size(), equalTo(1)); + assertThat(courses.get(0).getName(), equalTo("math")); + } +}