Spring in Action 学习笔记 1(A Spring jump start)

Spring in Action 学习笔记 1(A Spring jump start)
Spring jump start

Spring-enabled applications are like any Java application. They are made up of  several classes, each performing a specific purpose within the application. What makes Spring-enabled applications different, however, is how these classes are configured and introduced to each other. Typically, a Spring application has an XML file that describes how to configure the classes, known as the Spring configuration file.
Listing 1.1
The GreetingService interface separates the service's  implementation from its interface.   
package  com.springinaction.chapter01.hello;
public   interface  GreetingService  {
public void sayGreeting();
}

Listing 1.2 GreetingServiceImpl.java: Responsible for printing the greeting                        
package  com.springinaction.chapter01.hello;
public   class  GreetingServiceImpl  implements  GreetingService  {
private String greeting;
public GreetingServiceImpl() {}
public GreetingServiceImpl(String greeting) {
this.greeting = greeting;
}

public void sayGreeting() {
System.out.println(greeting);
}

public void setGreeting(String greeting) {
this.greeting = greeting;
}

}

Noticed that the greeting can be set in two different ways: by the constructor or by the property’s setter method.

We’re going to let the Spring container set the greeting property. The Spring configuration file(hello.xml) in listing 1.3 tells the container how to configure the greeting service.

Listing 1.3 Configuring Hello World in Spring                                                                      

<? xml version="1.0" encoding="UTF-8" ?>
<! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd"
>
< beans >
< bean  id ="greetingService"
class
="com.springinaction.chapter01.hello.GreetingServiceImpl" >
< property  name ="greeting" >
< value > Buenos Dias! </ value >
</ property >
</ bean >
</ beans >

Let’s dig into the details of this XML file a bit to understand how it works.At the root of this simple XML file is the <beans> element, which is the root element of any Spring configuration file. The <bean> element is used to tell the Spring container about a class and how it should be configured. Here, the id attribute is used to name the bean greetingService and the class attribute specifies the bean's fully qualified class name.

xml文件的<value>元素定义了javabean之 greeting的值.下边的一段代码粗略的阐明了基于xml 1.3文件的内容,容器都做了些什么.
GreetingServiceImpl greetingService  =   new  GreetingServiceImpl();
greetingService.setGreeting(
" Buenos Dias! " );

Similarly, we may choose to have Spring set the greeting property through GreetingServiceImpl's  single argument constructor. For example:
< bean  id ="greetingService"
class
="com.springinaction.chapter01.hello.GreetingServiceImpl" >
< constructor-arg >
< value > Buenos Dias! </ value >
</ constructor-arg >
</ bean >

The following code illustrates how the container will instantiate the greeting service
when using the <constructor-arg> element:
GreetingServiceImpl greetingService  = new  GreetingServiceImpl(“Buenos Dias”);
The last piece of the puzzle is the class that loads the Spring container and uses it
to retrieve the greeting service. Listing 1.4 shows this class.
Listing 1.4 The Hello World main class                                                                                

package  com.springinaction.chapter01.hello;
import  java.io.FileInputStream;
import  org.springframework.beans.factory.BeanFactory;
import  org.springframework.beans.factory.xml.XmlBeanFactory;
public   class  HelloApp  {
public static void main(String[] args) throws Exception {
BeanFactory factory 
=
new XmlBeanFactory(new FileInputStream("hello.xml"));
GreetingService greetingService 
=
(GreetingService) factory.getBean(
"greetingService");
greetingService.sayGreeting();
}

}

The BeanFactory class used here is the Spring container. After loading the hello.xml file into the container, the main() method calls the getBean() method on the BeanFactory to retrieve a reference to the greeting service. With this reference in hand, it finally calls the sayGreeting() method. When we run the Hello application, it prints (not surprisingly)

      Buenos Dias!

The real power of Spring lies in how beans can be injected into other beans using IoC.
see next........continue!

你可能感兴趣的:(Spring in Action 学习笔记 1(A Spring jump start))