2016-11-01 2 views
0

Я сейчас следующие tutorial о Spring MVC and REST service. Это простой проект приветствия.Jackson FasterXML: Как Spring знает, как json-объект?

Что-то я не понимаю. В pom.xml мы устанавливаем зависимость Jackson, но она никогда не настраивается. Как Spring знает, как json-объект?

Вот образцы кода:

пом XML (зависимостей):

<dependencies> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${springframework.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>${springframework.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${springframework.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>${jackson.library}</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.dataformat</groupId> 
     <artifactId>jackson-dataformat-xml</artifactId> 
     <version>${jackson.library}</version> 
    </dependency> 
</dependencies> 

AppConfiguration:

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages = "package.to.scan") 
public class AppConfiguration { 
} 

AppInitializer:

public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

    @Override 
    protected Class<?>[] getRootConfigClasses() { 
     return new Class[] { AppConfiguration.class }; 
    } 

    @Override 
    protected Class<?>[] getServletConfigClasses() { 
     return null; 
    } 

    @Override 
    protected String[] getServletMappings() { 
     return new String[] { "/" }; 
    } 
} 

AppController:

@RestController 
public class AppController { 

    @RequestMapping("/") 
    public String welcome() { 
     return "Welcome to RestTemplate Example."; 
    } 

    @RequestMapping("/hello/{player}") 
    public Message message(@PathVariable String player) { 

     Message msg = new Message(player, "Hello " + player); 
     return msg; 
    } 
} 

Модель:

public class Message { 

    String name; 
    String text; 

    public Message(){ 

    } 

    public Message(String name, String text) { 
     this.name = name; 
     this.text = text; 
    } 

    public String getName() { 
     return name; 
    } 

    public String getText() { 
     return text; 
    } 

} 

ответ

1

Spring имеет стандартный набор HttpMessageConverter с, причем один из них MappingJackson2HttpMessageConverter, который используется, если тип содержимого это json, и если Джексон доступен в classpath.

+0

Спасибо за ваш ответ. Это делает мой день. –

Смежные вопросы