zoukankan      html  css  js  c++  java
  • SpringBoot

    目录

      简介

      application.properties

      Maven搭建SpringBoot

      SpringBoot&Thymeleaf

      ErrorPage

    IDE搭建SpringBoot

    简介

    Spring Boot是微服务框架,Spring Boot框架,它的作用很简单,就是帮我们自动配置。Spring Boot框架的核心就是自动配置,只要存在相应的jar包,Spring就帮我们自动配置。Spring Boot还集成了嵌入式的Web服务器,系统监控等很多有用的功,让我们快速构建企业及应用程序。

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。多年以来,Spring IO平台饱受非议的一点就是大量的XML配置以及复杂的依赖管理,开发人员不仅不再需要编写XML,而且在一些场景中甚至不需要编写繁琐的import语句。Spring Boot,甚至可以说整个Spring生态系统都使用到了Groovy编程语言。Boot所提供的众多便捷功能,都是借助于Groovy强大的MetaObject协议、可插拔的AST转换过程以及内置的依赖解决方案引擎所实现的。

    官网地址: https://projects.spring.io/spring-boot/

          https://docs.spring.io/spring-boot/docs/1.5.8.RELEASE/api/

    从官网可以看到相关的基础配置,应用说明。

    application.properties

    springBoot会有个默认配置,但会优先加载用户的application.properties的内容。

    文件目录:src/main/resources下。

    可使用的所有配置信息:

    # ===================================================================  
    # COMMON SPRING BOOT PROPERTIES  
    #  
    # This sample file is provided as a guideline. Do NOT copy it in its  
    # entirety to your own application.               ^^^  
    # ===================================================================  
      
    # ----------------------------------------  
    # CORE PROPERTIES  
    # ----------------------------------------  
      
    # SPRING CONFIG (ConfigFileApplicationListener)  
    spring.config.name= # config file name (default to 'application')  
    spring.config.location= # location of config file  
      
    # PROFILES  
    spring.profiles= # comma list of active profiles  
      
    # APPLICATION SETTINGS (SpringApplication)  
    spring.main.sources=  
    spring.main.web-environment= # detect by default  
    spring.main.show-banner=true  
    spring.main....= # see class for all properties  
      
    # LOGGING  
    logging.path=/var/logs  
    logging.file=myapp.log  
    logging.config=  
      
    # IDENTITY (ContextIdApplicationContextInitializer)  
    spring.application.name=  
    spring.application.index=  
      
    # EMBEDDED SERVER CONFIGURATION (ServerProperties)  
    server.port=8080  
    server.address= # bind to a specific NIC  
    server.session-timeout= # session timeout in seconds  
    server.context-path= # the context path, defaults to '/'  
    server.servlet-path= # the servlet path, defaults to '/'  
    server.tomcat.access-log-pattern= # log pattern of the access log  
    server.tomcat.access-log-enabled=false # is access logging enabled  
    server.tomcat.protocol-header=x-forwarded-proto # ssl forward headers  
    server.tomcat.remote-ip-header=x-forwarded-for  
    server.tomcat.basedir=/tmp # base dir (usually not needed, defaults to tmp)  
    server.tomcat.background-processor-delay=30; # in seconds  
    server.tomcat.max-threads = 0 # number of threads in protocol handler  
    server.tomcat.uri-encoding = UTF-8 # character encoding to use for URL decoding  
      
    # SPRING MVC (HttpMapperProperties)  
    http.mappers.json-pretty-print=false # pretty print JSON  
    http.mappers.json-sort-keys=false # sort keys  
    spring.mvc.locale= # set fixed locale, e.g. en_UK  
    spring.mvc.date-format= # set fixed date format, e.g. dd/MM/yyyy  
    spring.mvc.message-codes-resolver-format= # PREFIX_ERROR_CODE / POSTFIX_ERROR_CODE  
    spring.view.prefix= # MVC view prefix  
    spring.view.suffix= # ... and suffix  
    spring.resources.cache-period= # cache timeouts in headers sent to browser  
    spring.resources.add-mappings=true # if default mappings should be added  
      
    # THYMELEAF (ThymeleafAutoConfiguration)  
    spring.thymeleaf.prefix=classpath:/templates/  
    spring.thymeleaf.suffix=.html  
    spring.thymeleaf.mode=HTML5  
    spring.thymeleaf.encoding=UTF-8  
    spring.thymeleaf.content-type=text/html # ;charset=<encoding> is added  
    spring.thymeleaf.cache=true # set to false for hot refresh  
      
    # FREEMARKER (FreeMarkerAutoConfiguration)  
    spring.freemarker.allowRequestOverride=false  
    spring.freemarker.allowSessionOverride=false  
    spring.freemarker.cache=true  
    spring.freemarker.checkTemplateLocation=true  
    spring.freemarker.contentType=text/html  
    spring.freemarker.exposeRequestAttributes=false  
    spring.freemarker.exposeSessionAttributes=false  
    spring.freemarker.exposeSpringMacroHelpers=false  
    spring.freemarker.prefix=  
    spring.freemarker.requestContextAttribute=  
    spring.freemarker.settings.*=  
    spring.freemarker.suffix=.ftl  
    spring.freemarker.templateEncoding=UTF-8  
    spring.freemarker.templateLoaderPath=classpath:/templates/  
    spring.freemarker.viewNames= # whitelist of view names that can be resolved  
      
    # GROOVY TEMPLATES (GroovyTemplateAutoConfiguration)  
    spring.groovy.template.allowRequestOverride=false  
    spring.groovy.template.allowSessionOverride=false  
    spring.groovy.template.cache=true  
    spring.groovy.template.configuration.*= # See Groovy's TemplateConfiguration  
    spring.groovy.template.contentType=text/html  
    spring.groovy.template.prefix=classpath:/templates/  
    spring.groovy.template.suffix=.tpl  
    spring.groovy.template.templateEncoding=UTF-8  
    spring.groovy.template.viewNames= # whitelist of view names that can be resolved  
      
    # VELOCITY TEMPLATES (VelocityAutoConfiguration)  
    spring.velocity.allowRequestOverride=false  
    spring.velocity.allowSessionOverride=false  
    spring.velocity.cache=true  
    spring.velocity.checkTemplateLocation=true  
    spring.velocity.contentType=text/html  
    spring.velocity.dateToolAttribute=  
    spring.velocity.exposeRequestAttributes=false  
    spring.velocity.exposeSessionAttributes=false  
    spring.velocity.exposeSpringMacroHelpers=false  
    spring.velocity.numberToolAttribute=  
    spring.velocity.prefix=  
    spring.velocity.properties.*=  
    spring.velocity.requestContextAttribute=  
    spring.velocity.resourceLoaderPath=classpath:/templates/  
    spring.velocity.suffix=.vm  
    spring.velocity.templateEncoding=UTF-8  
    spring.velocity.viewNames= # whitelist of view names that can be resolved  
      
    # INTERNATIONALIZATION (MessageSourceAutoConfiguration)  
    spring.messages.basename=messages  
    spring.messages.cacheSeconds=-1  
    spring.messages.encoding=UTF-8  
      
      
    # SECURITY (SecurityProperties)  
    security.user.name=user # login username  
    security.user.password= # login password  
    security.user.role=USER # role assigned to the user  
    security.require-ssl=false # advanced settings ...  
    security.enable-csrf=false  
    security.basic.enabled=true  
    security.basic.realm=Spring  
    security.basic.path= # /**  
    security.headers.xss=false  
    security.headers.cache=false  
    security.headers.frame=false  
    security.headers.contentType=false  
    security.headers.hsts=all # none / domain / all  
    security.sessions=stateless # always / never / if_required / stateless  
    security.ignored=false  
      
    # DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)  
    spring.datasource.name= # name of the data source  
    spring.datasource.initialize=true # populate using data.sql  
    spring.datasource.schema= # a schema (DDL) script resource reference  
    spring.datasource.data= # a data (DML) script resource reference  
    spring.datasource.platform= # the platform to use in the schema resource (schema-${platform}.sql)  
    spring.datasource.continueOnError=false # continue even if can't be initialized  
    spring.datasource.separator=; # statement separator in SQL initialization scripts  
    spring.datasource.driverClassName= # JDBC Settings...  
    spring.datasource.url=  
    spring.datasource.username=  
    spring.datasource.password=  
    spring.datasource.max-active=100 # Advanced configuration...  
    spring.datasource.max-idle=8  
    spring.datasource.min-idle=8  
    spring.datasource.initial-size=10  
    spring.datasource.validation-query=  
    spring.datasource.test-on-borrow=false  
    spring.datasource.test-on-return=false  
    spring.datasource.test-while-idle=  
    spring.datasource.time-between-eviction-runs-millis=  
    spring.datasource.min-evictable-idle-time-millis=  
    spring.datasource.max-wait-millis=  
      
    # MONGODB (MongoProperties)  
    spring.data.mongodb.host= # the db host  
    spring.data.mongodb.port=27017 # the connection port (defaults to 27107)  
    spring.data.mongodb.uri=mongodb://localhost/test # connection URL  
    spring.data.mongo.repositories.enabled=true # if spring data repository support is enabled  
      
    # JPA (JpaBaseConfiguration, HibernateJpaAutoConfiguration)  
    spring.jpa.properties.*= # properties to set on the JPA connection  
    spring.jpa.openInView=true  
    spring.jpa.show-sql=true  
    spring.jpa.database-platform=  
    spring.jpa.database=  
    spring.jpa.generate-ddl=false # ignored by Hibernate, might be useful for other vendors  
    spring.jpa.hibernate.naming-strategy= # naming classname  
    spring.jpa.hibernate.ddl-auto= # defaults to create-drop for embedded dbs  
    spring.data.jpa.repositories.enabled=true # if spring data repository support is enabled  
      
    # SOLR (SolrProperties})  
    spring.data.solr.host=http://127.0.0.1:8983/solr  
    spring.data.solr.zkHost=  
    spring.data.solr.repositories.enabled=true # if spring data repository support is enabled  
      
    # ELASTICSEARCH (ElasticsearchProperties})  
    spring.data.elasticsearch.cluster-name= # The cluster name (defaults to elasticsearch)  
    spring.data.elasticsearch.cluster-nodes= # The address(es) of the server node (comma-separated; if not specified starts a client node)  
    spring.data.elasticsearch.local=true # if local mode should be used with client nodes  
    spring.data.elasticsearch.repositories.enabled=true # if spring data repository support is enabled  
      
      
      
    # FLYWAY (FlywayProperties)  
    flyway.locations=classpath:db/migrations # locations of migrations scripts  
    flyway.schemas= # schemas to update  
    flyway.initVersion= 1 # version to start migration  
    flyway.prefix=V  
    flyway.suffix=.sql  
    flyway.enabled=true  
    flyway.url= # JDBC url if you want Flyway to create its own DataSource  
    flyway.user= # JDBC username if you want Flyway to create its own DataSource  
    flyway.password= # JDBC password if you want Flyway to create its own DataSource  
      
    # LIQUIBASE (LiquibaseProperties)  
    liquibase.change-log=classpath:/db/changelog/db.changelog-master.yaml  
    liquibase.contexts= # runtime contexts to use  
    liquibase.default-schema= # default database schema to use  
    liquibase.drop-first=false  
    liquibase.enabled=true  
      
    # JMX  
    spring.jmx.enabled=true # Expose MBeans from Spring  
      
    # RABBIT (RabbitProperties)  
    spring.rabbitmq.host= # connection host  
    spring.rabbitmq.port= # connection port  
    spring.rabbitmq.addresses= # connection addresses (e.g. myhost:9999,otherhost:1111)  
    spring.rabbitmq.username= # login user  
    spring.rabbitmq.password= # login password  
    spring.rabbitmq.virtualhost=  
    spring.rabbitmq.dynamic=  
      
    # REDIS (RedisProperties)  
    spring.redis.host=localhost # server host  
    spring.redis.password= # server password  
    spring.redis.port=6379 # connection port  
    spring.redis.pool.max-idle=8 # pool settings ...  
    spring.redis.pool.min-idle=0  
    spring.redis.pool.max-active=8  
    spring.redis.pool.max-wait=-1  
      
    # ACTIVEMQ (ActiveMQProperties)  
    spring.activemq.broker-url=tcp://localhost:61616 # connection URL  
    spring.activemq.user=  
    spring.activemq.password=  
    spring.activemq.in-memory=true # broker kind to create if no broker-url is specified  
    spring.activemq.pooled=false  
      
    # HornetQ (HornetQProperties)  
    spring.hornetq.mode= # connection mode (native, embedded)  
    spring.hornetq.host=localhost # hornetQ host (native mode)  
    spring.hornetq.port=5445 # hornetQ port (native mode)  
    spring.hornetq.embedded.enabled=true # if the embedded server is enabled (needs hornetq-jms-server.jar)  
    spring.hornetq.embedded.serverId= # auto-generated id of the embedded server (integer)  
    spring.hornetq.embedded.persistent=false # message persistence  
    spring.hornetq.embedded.data-directory= # location of data content (when persistence is enabled)  
    spring.hornetq.embedded.queues= # comma separate queues to create on startup  
    spring.hornetq.embedded.topics= # comma separate topics to create on startup  
    spring.hornetq.embedded.cluster-password= # customer password (randomly generated by default)  
      
    # JMS (JmsProperties)  
    spring.jms.pub-sub-domain= # false for queue (default), true for topic  
      
    # SPRING BATCH (BatchDatabaseInitializer)  
    spring.batch.job.names=job1,job2  
    spring.batch.job.enabled=true  
    spring.batch.initializer.enabled=true  
    spring.batch.schema= # batch schema to load  
      
    # AOP  
    spring.aop.auto=  
    spring.aop.proxy-target-class=  
      
    # FILE ENCODING (FileEncodingApplicationListener)  
    spring.mandatory-file-encoding=false  
      
    # SPRING SOCIAL (SocialWebAutoConfiguration)  
    spring.social.auto-connection-views=true # Set to true for default connection views or false if you provide your own  
      
    # SPRING SOCIAL FACEBOOK (FacebookAutoConfiguration)  
    spring.social.facebook.app-id= # your application's Facebook App ID  
    spring.social.facebook.app-secret= # your application's Facebook App Secret  
      
    # SPRING SOCIAL LINKEDIN (LinkedInAutoConfiguration)  
    spring.social.linkedin.app-id= # your application's LinkedIn App ID  
    spring.social.linkedin.app-secret= # your application's LinkedIn App Secret  
      
    # SPRING SOCIAL TWITTER (TwitterAutoConfiguration)  
    spring.social.twitter.app-id= # your application's Twitter App ID  
    spring.social.twitter.app-secret= # your application's Twitter App Secret  
      
    # SPRING MOBILE SITE PREFERENCE (SitePreferenceAutoConfiguration)  
    spring.mobile.sitepreference.enabled=true # enabled by default  
      
    # SPRING MOBILE DEVICE VIEWS (DeviceDelegatingViewResolverAutoConfiguration)  
    spring.mobile.devicedelegatingviewresolver.enabled=true # disabled by default  
    spring.mobile.devicedelegatingviewresolver.normalPrefix=  
    spring.mobile.devicedelegatingviewresolver.normalSuffix=  
    spring.mobile.devicedelegatingviewresolver.mobilePrefix=mobile/  
    spring.mobile.devicedelegatingviewresolver.mobileSuffix=  
    spring.mobile.devicedelegatingviewresolver.tabletPrefix=tablet/  
    spring.mobile.devicedelegatingviewresolver.tabletSuffix=  
      
    # ----------------------------------------  
    # ACTUATOR PROPERTIES  
    # ----------------------------------------  
      
    # MANAGEMENT HTTP SERVER (ManagementServerProperties)  
    management.port= # defaults to 'server.port'  
    management.address= # bind to a specific NIC  
    management.contextPath= # default to '/'  
      
    # ENDPOINTS (AbstractEndpoint subclasses)  
    endpoints.autoconfig.id=autoconfig  
    endpoints.autoconfig.sensitive=true  
    endpoints.autoconfig.enabled=true  
    endpoints.beans.id=beans  
    endpoints.beans.sensitive=true  
    endpoints.beans.enabled=true  
    endpoints.configprops.id=configprops  
    endpoints.configprops.sensitive=true  
    endpoints.configprops.enabled=true  
    endpoints.configprops.keys-to-sanitize=password,secret  
    endpoints.dump.id=dump  
    endpoints.dump.sensitive=true  
    endpoints.dump.enabled=true  
    endpoints.env.id=env  
    endpoints.env.sensitive=true  
    endpoints.env.enabled=true  
    endpoints.health.id=health  
    endpoints.health.sensitive=false  
    endpoints.health.enabled=true  
    endpoints.info.id=info  
    endpoints.info.sensitive=false  
    endpoints.info.enabled=true  
    endpoints.metrics.id=metrics  
    endpoints.metrics.sensitive=true  
    endpoints.metrics.enabled=true  
    endpoints.shutdown.id=shutdown  
    endpoints.shutdown.sensitive=true  
    endpoints.shutdown.enabled=false  
    endpoints.trace.id=trace  
    endpoints.trace.sensitive=true  
    endpoints.trace.enabled=true  
      
    # MVC ONLY ENDPOINTS  
    endpoints.jolokia.path=jolokia  
    endpoints.jolokia.sensitive=true  
    endpoints.jolokia.enabled=true # when using Jolokia  
    endpoints.error.path=/error  
      
    # JMX ENDPOINT (EndpointMBeanExportProperties)  
    endpoints.jmx.enabled=true  
    endpoints.jmx.domain= # the JMX domain, defaults to 'org.springboot'  
    endpoints.jmx.unique-names=false  
    endpoints.jmx.enabled=true  
    endpoints.jmx.staticNames=  
      
    # JOLOKIA (JolokiaProperties)  
    jolokia.config.*= # See Jolokia manual  
      
    # REMOTE SHELL  
    shell.auth=simple # jaas, key, simple, spring  
    shell.command-refresh-interval=-1  
    shell.command-path-pattern= # classpath*:/commands/**, classpath*:/crash/commands/**  
    shell.config-path-patterns= # classpath*:/crash/*  
    shell.disabled-plugins=false # don't expose plugins  
    shell.ssh.enabled= # ssh settings ...  
    shell.ssh.keyPath=  
    shell.ssh.port=  
    shell.telnet.enabled= # telnet settings ...  
    shell.telnet.port=  
    shell.auth.jaas.domain= # authentication settings ...  
    shell.auth.key.path=  
    shell.auth.simple.user.name=  
    shell.auth.simple.user.password=  
    shell.auth.spring.roles=  
      
    # GIT INFO  
    spring.git.properties= # resource ref to generated git info properties file
    application.properties

     当然在启动springboot时,还是优先加载启动参数中的值。

    >Java -jar app.jar --name="Spring" --server.port=9090

    这个参数会覆盖application.properties中的参数。

    Spring Boot 常用的配置项已经内置到程序里了,只要你开启@AutoConfiguration。
    可以查看autoconfigure包下的源码了解具体的实现。

    Maven搭建SpringBoot

    Maven工程(HelloWorld)

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.example</groupId>
        <artifactId>myproject</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    
        <!-- Inherit defaults from Spring Boot -->
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.8.RELEASE</version>
        </parent>
    
        <!-- Add typical dependencies for a web application -->
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        </dependencies>
    
        <!-- Package as an executable jar -->
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    Maven 配置
    plugins {
        id 'org.springframework.boot' version '1.5.8.RELEASE'
        id 'java'
    }
    
    
    jar {
        baseName = 'myproject'
        version =  '0.0.1-SNAPSHOT'
    }
    
    repositories {
        jcenter()
    }
    
    dependencies {
        compile("org.springframework.boot:spring-boot-starter-web")
        testCompile("org.springframework.boot:spring-boot-starter-test")
    }
    Gradle 配置

    spring-boot-starter-parent 版本可在Maven中央仓库查看更新或是Spring官网中查看release版。

    如果不用spring-boot-start-parent可用以下的依赖注入:

    参考文章:https://blog.csdn.net/aixiaoyang168/article/details/80571011

    在父pom.xml中植入spring-boot-dependency依赖:

        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-dependencies</artifactId>
                    <version>${spring.boot.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>

    然后在相应的需要使用的子pom中添加依赖的内容即可:

    比如:spring-boot-start和web:

     <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
     

    创建Maven的java应用,将以上的Maven配置Boot信息copy到pom中,如有不同请更新spring-boot-starter-parent 版本。

    @SpringBootApplication
    public class Application {
        
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    
    }
    Application
    /**
     * 创建HelloWorld
     * 
     * @author DennyZhao
     * @date 2017年11月13日
     * @version 1.0
     */
    @RestController
    @RequestMapping("/rest")
    @EnableAutoConfiguration
    public class HelloSpringBoot {
        
        Logger log = LoggerFactory.getLogger(HelloSpringBoot.class);
        
        @RequestMapping("/home")
        public String outText() {
            log.debug("----");
            return "home";
        }
        
        @RequestMapping("/param/{params}")
        public String outInput(@PathVariable String params) {
            log.debug("--sss--");
            return " out: --" + params;
        }
    }
    HelloSpringBoot

    ※注意1.SpringApplication只会扫描对应的包和子包下的所有文件。

         2.页面访问不需要添加项目名。

    启动application的main方法,或mvn spring-boot:run 运行spring内嵌(embed)Tomcat服务器在浏览器输入http://127.0.0.1:8080/rest/home

    springBoot目录讲解:

      springBoot不再使用webapp或webcontent作为前台输出内容的容器。

      只有src目录,所有要访问的静态和动态资源文件都在src/main/resources下。

      static 和 public 目录专门存放静态资源文件(html、js、css、img文件)

      templates 下专门存放模板文件。

      静态首页默认为index.html,以下位置均可默认被查找到。

    classpath:/META-INF/resources/index.html  
    classpath:/resources/index.html  
    classpath:/static/index.html  
    calsspath:/public/index.html

     如需修改可通过java中编写路径映射:

    @RequestMapping("/")  
        public String index(){  
            return "index2";  
        }

     也可在resources下创建 application.properties 文件,内容写:

    classpath:/static/index2.html

    springBoot优先加载此文件。

     静态文件访问:http://127.0.0.1:8080/html/hello2.html

      

    SpringBoot&Thymeleaf

    SpringBoot使用模板引擎不再推荐使用jsp,thymeleaf以html为后缀且与springBoot的结合受到青睐。

    ErrorPage

    在程序运行中,难免会遇到程序运行错误抛出异常,但SpringBoot的默认错误页面White label error page 太难看。需要自己定义。

    1. error.path配置

    在application.properties下添加:

    error.path=/error

    在测试java中输入 :

    int i = 5/0; 

    则会跳转到错误页面。

    但以上方式不能展示错误原因,比较笼统。

    2.  ExceptionHandler

      创建@ControllerAdvice控制全局的requestMapping访问,即相当于增加过滤器filter

    @ControllerAdvice
    public class CommonController {
    
        @ExceptionHandler(value=Exception.class)
        public ModelAndView exceptionHandler(HttpServletRequest req, Exception e) {
            ModelAndView modelAndView = new ModelAndView("error");
            modelAndView.addObject("e", e);
            modelAndView.addObject("eMsg", e.getMessage());
            modelAndView.addObject("eCause", e.getCause());
            return modelAndView;
        }
    }
    CommonController
        <div th:text="${eMsg}">错误信息</div>
        <div th:text="${e}">错误详细</div>

    即可打印出错误信息,此种方式可针对服务器内部错误500。但404链接不可达不能控制。

    3. EmbeddedServletContainerCustomizer指定错误

    Spring Boot默认使用嵌入式Tomcat,默认没有页面来处理404等常见错误,因此需要自定义404页面。

    使用org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer类构造错误页面的errorPage。

    参考文章:

    深入学习微框架:Spring Boot (http://www.infoq.com/cn/articles/microframeworks1-spring-boot)

    SpringBoot入门系列:第一篇 Hello World(http://blog.csdn.net/lxhjh/article/details/51711148)

    Spring Boot 框架介绍和使用(http://blog.csdn.net/u011054333/article/details/62976388)

    深入学习spring-boot系列(三)--使用thymeleaf模板(http://blog.csdn.net/u012558400/article/details/53321558)

    Spring boot(9) 的异常,以及异常页面的处理(http://blog.csdn.net/kkgbn/article/details/52120139)

    Spring Boot自定义错误页面,Whitelabel Error Page处理方式(http://blog.csdn.net/github_32521685/article/details/50198467)

    spring boot application properties配置详解(http://blog.csdn.net/xiaoyu411502/article/details/48049099)

  • 相关阅读:
    11. Container With Most Water
    9. Palindrome Number
    375. 猜数字大小 II leetcode java
    leetcode 72 编辑距离 JAVA
    73. 矩阵置零 leetcode JAVA
    快速排序 JAVA实现
    63. 不同路径 II leetcode JAVA
    重写(override)与重载(overload)
    62 不同路径 leetcode JAVA
    leetcode 56 合并区间 JAVA
  • 原文地址:https://www.cnblogs.com/DennyZhao/p/7837344.html
Copyright © 2011-2022 走看看