`
youyu4
  • 浏览: 435375 次
社区版块
存档分类
最新评论

Spring Boot 之Spring MVC

 
阅读更多

Spring Boot 之Spring MVC

 

搭建一个web应用

 

引入Maven依赖

    <!--
          这里使用官方最新的版本,官方推荐建议继承默认的springboot配置
          继承后,项目的编译级别会自动变为jdk1.6版本。
    -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.3.RELEASE</version>
    </parent>

    <!-- 
          添加一个web应用所需要的依赖,它会自动引入tomcat内置容器、log4j、jackson等通用的依赖 
    -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

 

我们可以通过 mvn dependency:tree 来查看项目的依赖结构树



 

 

Controller

package com.panlingxiao.springboot.web.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * RestController是Spring 4.0推出的新特性,
 * 使用其标注表示当前类为一个@Controller,并且
 * 使用@RequestMapping所标注的方法的返回值默认会被认为使用
 * 了@ResponseBody进行标注,因此不再使用视图解析的方式进行处理,
 * 而是将内容通过HTTP响应体返回给客户端。
 */
@RestController
public class HelloController {

    /**
     * spring boot会自动读取application.properties,
     * 并且将其作为系统参数进行注入,用户也可以在启动应用的时候
     * 通过-Dname=xxx来手动注入,手动注入会覆盖配置文件中的参数
         * 如果没有指定值,那么name的默认值就是World。
     */
    @Value("${name:World}")
    private String name;

    /**
     * 由于使用了@RestControlelr,因此无需在使用@ResponseBody来标注返回的结果
     */
    @RequestMapping("/hello")
    public String sayHello(){
        return String.format("hello:%s", name);
    }
}

 @RestController,可以直接将值response出去,不需要@ResponseBody

 

Spring Boot启动类

package com.panlingxiao.springboot.web;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

//如果用了Spring Boot,一定要加这个
@SpringBootApplication
public class WebApp{

    /*
     * 直接用Main方法运行,就能启动Spring Boot
    */
    public static void main(String[] args) {
        SpringApplication.run(WebApp.class, args);
    }
}

 

启动后结果



 

启动后,默认端口是8080,没有设置上下文的情况下应该请求下面URL

http://127.0.0.1:8080/hello

 理解上面启动类中的注释:@SpringBootApplication

 

该注解其实又是由其他3个注解来标识,它们分别是@Configuration、@EnableAutoConfiguration、@ComponentScan。



 

 

@Configuration:

表示该类是配置文件,可以定义Bean,相当于xml的配置

/**
 * 使用@Configuration标识
 * 在当前类中通过@Bean标注的方式
 * 之后都由Spring的AppplicationContext来进行调用
 * 从而生成Bean对象。
 */
@Configuration
public class AppConfig {
    @Bean
    public User getUser(){
        User user = new User();
        return user;
    }
}

 

public class App {

    public static void main(String[] args) {
        /*
         * 将@Configuraion所标识的类通过Spring的上下问进行加载,从而实现Bean的创建。 
          */
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
        ctx.register(AppConfig.class);
        ctx.refresh();

        User user = ctx.getBean("user", User.class);
        String value = user.sayHello();
    }
}

 

 

@EnableAutoConfiguration:

该注解是让Spring根据当前classpath中所存在的类,自动推断出当前运行的环境(判断是否一个Web应用还是一个普通的Java应用),然后根据具体的环境去创建对应的bean,将其添加的Spring的ApplicationContext中。

 

比如:我们在classpath中添加了tomcat-embedded.jar,因此它会去自动帮助我们自动地创建一个EmbeddedServletContainerFactory。如果没有这个对象,那么我们的Tomcat是无法启动的。我们将WebApp改成如下结果:

//不再设置EnableAutoConfiguration会导致应用启动失败
@Configuration
@ComponentScan
public class WebApp {
    public static void main(String[] args) {
        SpringApplication.run(WebApp.class, args);
    }
}

 

 @ComponentScan:

该注解就是让Spring容器自动根据指定的包以及子包中进行组件的查找然后创建,如果没有指定具体到哪个包中进行查找,那么就以当前使用该注解的类所在的包作为查找的根,进行查找。即在WebApp这个类所在的包及其子包中进行查找。

 

注意:这里我将HelloController定义在了WebApp所在的包的子包中,如果它们所在的包不具有上面所描述的查找关系,那么Controller是不会被创建的,即使应用可以启动,但是最终响应的结果将是404。

 

我们在main方法中使用了SpringApplication这个类完成了应用的启动,该类是一个Spring应用启动的引导工具类,它底层维护着Spring容器。

 

 

参考:

http://www.jianshu.com/u/dc9be3b69337

 

 

  • 大小: 14.1 KB
  • 大小: 12.8 KB
  • 大小: 8.2 KB
  • 大小: 5.8 KB
分享到:
评论

相关推荐

    LEARNING SPRING BOOT 3.0 - THIRD EDITION

    《Learning Spring Boot 3.0 - 第三版》是...书中还会深入讨论Spring Boot的核心特性,比如自动配置、健康检查、内嵌的Tomcat或Jetty服务器、Spring MVC用于构建RESTful API,以及数据访问层的集成,包括JPA和Hibernat

    spring boot资料以及项目

    在Web开发方面,Spring Boot提供了Spring MVC框架,用于处理HTTP请求。资料中可能会有RESTful API设计、WebSocket、Swagger接口文档生成等实践内容。同时,Spring Boot与Spring Security的整合能帮助你快速实现应用...

    Spring Boot 2 Recipes

    访问Spring MVC和新的Spring Web Sockets,以实现更简单的Web开发 使用微服务进行Web服务开发并与Spring Boot应用程序集成 无缝添加持久性和数据层,使您的Spring Boot Web应用程序做得更多 使用Spring Boot集成企业...

    Spring Boot 2.5.0简单学习pdf资料

    Spring Boot 2.5.0 支持 Spring MVC,能够快速搭建 Web 应用程序。 MyBatis MyBatis 是一个持久化框架,提供了对数据库的访问功能。Spring Boot 2.5.0 支持 MyBatis,能够快速搭建数据库访问层。 项目开发流程 ...

    spring boot jsp mvc jpa hibernate mysql 示例 sample

    1. **Spring Boot MVC**:Spring Boot 提供了对 Spring MVC 的集成,使得构建 Web 应用变得简单。MVC(Model-View-Controller)设计模式是 Web 开发中常用的一种架构模式,用于分离业务逻辑、数据模型和用户界面。在...

    spring boot+spring mvc+spring整合开发音乐小程序(含简单服务端)

    spring boot+spring mvc+spring整合开发**音乐**小程序(含简单服务端) 项目描述 spring boot+spring mvc+spring代理请求**音乐接口获取数据,然后提供给**小程序做显示 运行环境 jdk8+IntelliJ IDEA+maven ...

    【BAT必备】spring面试题,spring MVC面试题,spring boot面试题,spring cloud面试题

    DispatcherServlet是Spring MVC的核心组件之一,它的主要作用是分发请求。当客户端发送请求到服务器时,DispatcherServlet会根据配置的HandlerMapping找到合适的控制器来处理请求,并返回相应的视图。 #### 3. ...

    Spring MVC 到 Spring Boot 的简化之路.docx

    Spring MVC 到 Spring Boot 的简化之路,这是一段旨在提高开发效率和降低复杂性的旅程。在传统的Spring MVC项目中,开发者需要处理繁琐的配置,包括pom.xml中的依赖管理、web.xml、spring.xml以及springmvc.xml等...

    Spring Boot实战派(源码)

    - Spring MVC的模型-视图-控制器模式,实现业务逻辑和表示层的分离。 6. **数据访问** - JPA和Hibernate集成,使用`@Entity`、`@Repository`、`@Service`、`@Transactional`注解进行数据库操作。 - 数据源配置,...

    Spring Boot学习 Spring Boot Spring MVC MyBatis MySQL Spring .zip

    首先,通过Spring Initializr或者手动创建项目结构,引入必要的依赖,比如`spring-boot-starter-web`(包含Spring MVC)和`mybatis-spring-boot-starter`。然后,定义数据源和MyBatis配置,包括Mapper接口和XML映射...

    Spring MVC / Spring Boot中使用Thymeleaf模板引擎

    在Java Web开发中,Spring MVC和Spring Boot框架是广泛使用的工具,它们提供了高效且灵活的构建Web应用的方式。Thymeleaf则是一个流行的服务器端模板引擎,它允许开发者使用HTML来编写视图,并在服务器端解析这些...

    Spring Boot 2.X 实战教程.pdf

    本课程内容包括Spring简介、Spring Boot简介、安装JDK、安装Maven、第一个Spring Boot程序(使用Spring Initializr构建、Spring Boot代码讲解、安装Notepad++)、构建系统、代码、配置、三种方式运行程序、安装...

    Spring-Boot-Reference-Guide, Spring Boot Reference Guide中文翻译 -《Spring Boot参考指南》.zip

    《Spring Boot参考指南》是Spring Boot开发者的重要参考资料,它详细阐述了Spring Boot框架的核心特性、配置方式、自动配置原理以及如何构建微服务应用等关键知识点。Spring Boot是Java开发领域中一个极其流行的轻量...

    《Spring Boot 2+Thymeleaf企业应用实战》_杨恩雄.pdf

    内容覆盖了从Spring Boot和Spring MVC基础,到Thymeleaf的深入应用,再到前端JavaScript框架(如jQuery、Bootstrap和Vue.js)的介绍,以及使用Spring Data操作数据库和应用Spring Cloud构建微服务。最后,通过案例将...

    Spring Boot 进阶笔记(详细全面) 中文PDF完整版.pdf

    1. **自动配置**:Spring Boot 根据项目中包含的依赖自动生成相应的配置,例如,引入 `spring-boot-starter-web` 会自动配置 Spring MVC 和 Tomcat 服务器。 2. **起步依赖(Starter POMs)**:Spring Boot 提供了一...

    spring mvc与 spring boot图片下载

    支持spring mvc和spring boot图片下载,不需要添加配置,下载路径为浏览器的默认路径。图片的下载地址,直接是图片的访问路径。直接a标签点击后,访问后台Controller直接下载,超级好用

    Spring Boot-实战

    3. **Web开发**:包括使用Spring MVC开发RESTful API,处理HTTP请求,使用模板引擎(如Thymeleaf)进行视图渲染,以及Spring Boot对WebSocket的支持。 4. **数据访问**:探讨如何集成和使用各种数据库,如H2内存...

    Spring MVC、Spring Boot和Spring Cloud 三者区别和联系.txt

    ### Spring MVC、Spring Boot 和 Spring Cloud 三者的区别与联系 #### 一、Spring MVC Spring MVC 是 Spring Framework 的一个重要组成部分,主要用于构建基于 Java 的 Web 应用程序。该框架采用了 MVC(Model-...

    spring mvc-spring boot-spring data

    Spring MVC、Spring Boot和Spring Data是Java开发领域中极为重要的框架,它们构成了现代企业级应用的基础。本资源集成了这三大框架,旨在提供一个基本零配置的开发环境,简化开发流程,提高效率。 Spring MVC是...

    spring boot+spring cloud+spring mvc+mybatis

    Spring Boot、Spring Cloud、Spring MVC和MyBatis是Spring生态系统中的关键组成部分,它们各自扮演着不同的角色,共同构建了一个完整的微服务架构。 1. **Spring Boot**:Spring Boot简化了Spring应用程序的初始...

Global site tag (gtag.js) - Google Analytics