zoukankan      html  css  js  c++  java
  • spring boot 知识点

    • 如果不想生成可执行的jar文件,想生成war包并自己直接放在tomcat容器跑,那就这样操作:
      1.修改pom.xml,将packaging由jar改成war,并添加tomcat的依赖,scope值为provided表明:如果打包时,需要内嵌tomcat,就自动提供。

      2.打开DemoApplication.java ,让他直接继承SpringBootServletInitializer,并重写configure方法,该方法的作用提供类似web.xml的配置服务。
    package com.example.demo;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.boot.context.web.SpringBootServletInitializer;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @SpringBootApplication
    @RestController
    public class DemoApplication extends SpringBootServletInitializer{
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(DemoApplication.class);
        }
    
        @RequestMapping(value = {"/",""})
        public String helloboot(){
            return "hello boot !!" ;
        }
    
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    }
    

    3.DemoApplication.java 直接右键,Run As - >Maven build..输入package的命令,就直接打成war包了

    • 为了构建一个既可执行,又能部署到外部容器的war文件,你需要标记内嵌容器依赖为"provided"。

    • 构建的jar或war里,你想启动的main类既可以通过一个配置选项指定,也可以通过向manifest添加一个Main-Class属性。如果你没有指定main类,该插件会搜索带有public static void main(String[] args)方法的类。

    • Spring Boot默认的日志输出节点(items)如下:

    1. 日期和时间 - 精确到毫秒,且易于排序。
    2. 日志级别 - ERROR, WARN, INFO, DEBUG 或 TRACE。
    3. Process ID。
    4. ---分隔符,用于区分实际日志信息开头。
    5. 线程名 - 包括在方括号中(控制台输出可能会被截断)。
    6. 日志名 - 通常是源class的类名(缩写)。
    7. 日志信息。
      注 Logback没有FATAL级别,它会映射到ERROR。
    • Spring DevTools 特点:
    1. 默认禁用缓存选项。
    2. 在类路径上的文件发生更改时自动重启。注意:某些资源(如静态资源和视图模板)不需要重启应用程序。
    3. 实时加载。
    4. 全局设置。
    • Spring DevTools 相关知识:
      运行打包的应用程序时,开发人员工具会自动禁用。如果你通过 Java -jar或者其他特殊的类加载器进行启动时,都会被认为是“生产环境的应用”。
      将依赖标记为optional可选是一种最佳做法,可以防止将devtools依赖传递到其他模块中。Gradle 不支持开箱即用的optional依赖项。

    • Spring官方已经不推荐使用JSP来开发WEB,而是推荐使用如下几种模板引擎来开发:
      Thymeleaf(Spring官方推荐)
      FreeMarker
      Velocity
      Groovy
      Mustache
      Spring Boot默认存放模板的路径在 src/main/resources/templates,不过我们也可以自行配置路径。

    • 处理静态文件
      默认情况下我们只需要在 src/main/resources/static 目录下添加 css/style.css 和 js/main.js 文件,Spring MVC能够自动将他们发布,浏览器通过访问/css/style.css, /js/main.js就可以正确加载这些资源。

    • 打包成了jar包,不需要容器就可以在生成环境下通过运行jar包启动一个Web服务。
      这样的服务怎么样正确的停止呢?或许你只是简单的kill -9对应的进程,但实际上,有更优雅的方式。
      Spring Boot里面有一个spring-boot-starter-actuator的项目,可以监控和管理Spring Boot应用。其中暴露了很多endpoint,可以方便的检测应用的健康情况。其中有一个shutdown的endpoint可以优雅地停止应用。
      参考链接:http://jaskey.github.io/blog/2016/04/05/shutdown-spring-boot-application-gracefully/

    • 报错:XX cannot be resolved to a type
      解决:

    1. jdk不匹配(或不存在)
      项目指定的jdk为“jdk1.6.0_18”,而当前eclipse使用的是“jdk1.6.0_22”。需要在BuildPath | Libraries,中做简单调整。
    2. jar包缺失或冲突
      当找不到“XX”所在的jar包时,会报这个错。解决只需要找到(ctrl+点击,可能能看到jar包名称)对应jar包导入项目即可。
      另外,出现相同的XX时也会报此错。可能需要调包、解包、选删。
    3. eclipse查找项目类型策略所致
      eclipse下,上述两条都对比过了,没有任何问题,可偏偏还报这错。这时,需要操作一下 Project | Clean... ,问题即可解决。原因是,机制所致。因为某些特殊原因,eclipse没能自动编译源代码到build/classes(或其他classes目录),导致类型查找不到。
    • 运行Spring Boot项目的方式:
      方式1:在IDE中直接执行 main 函数,然后访问http://localhost:8080。
      方式2:用 mvn 打包为可执行jar包,然后执行java -jar xxx.jar。
      方式3:执行 mvn spring-boot:run 运行项目(直接使用tomcat(默认)启动项目)。

    • 运行 main函数 方式来启动Spring Boot项目,下面3种写法中选择一种
      写法1,最简单的写法:

    SpringApplication.run(Application.class, args);
    

    该方法返回一个ApplicationContext对象,使用注解的时候返回的具体类型是AnnotationConfigApplicationContext或AnnotationConfigEmbeddedWebApplicationContext,当支持web的时候是第二个。
    写法2:

    SpringApplication application = new SpringApplication(Application.class);
    application.run(args);
    

    SpringApplication包含了一些其他可以配置的方法,如果你想做一些配置,可以用这种方式。
    写法3:使用SpringApplicationBuilder

    new SpringApplicationBuilder()
            .showBanner(false)
            .sources(Application.class)
            .run(args);
    

    当使用SpringMVC的时候由于需要使用子容器,就需要用到SpringApplicationBuilder,该类有一个child(xxx...)方法可以添加子容器。

    • java类文件中的注解
    1. @RestController
      web应用,需要写这个注解,这个注解相当于同时添加@Controller和@ResponseBody注解。
    2. @EnableAutoConfiguration
      Spring Boot建议只有一个带有该注解的类。
      @EnableAutoConfiguration作用:Spring Boot会自动根据你jar包的依赖来自动配置项目。
      如果你不想让Spring Boot自动创建,你可以配置注解的exclude属性,例如:
    @Configuration
    @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
    public class MyConfiguration {
    }
    
    1. @SpringBootApplication
      由于大量项目都会在主要的配置类上添加@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解。
      因此Spring Boot提供了@SpringBootApplication注解,该注解可以替代上面三个注解(使用Spring注解继承实现)。
    2. @RequestMapping("xxx")
      这个注解起到路由的作用。
    • 增加父pom比较简单,而且spring-boot-starter-parent包含了大量配置好的依赖管理,在自己项目添加这些依赖的时候不需要写版本号。
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.3.0.RELEASE</version>
        </parent>
    

    使用父pom虽然简单,但是有些情况我们已经有父pom,不能直接增加时,可以通过如下方式:

    <dependencyManagement>
         <dependencies>
            <dependency>
                <!-- Import dependency management from Spring Boot -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>1.2.3.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    • Spring通过添加spring-boot-starter-*这样的依赖就能支持具体的某个功能。
      更完整的功能列表可以查看:using-boot-starter-poms

    • Spring-Loaded项目提供了强大的热部署功能,添加/删除/修改 方法/字段/接口/枚举 等代码的时候都可以热部署,速度很快,很方便。
      想在Spring Boot中使用该功能非常简单,就是在spring-boot-maven-plugin插件下面添加依赖:

        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <dependencies>
                        <dependency>
                            <groupId>org.springframework</groupId>
                            <artifactId>springloaded</artifactId>
                            <version>1.2.5.RELEASE</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </build>
    

    添加以后,通过mvn spring-boot:run启动就支持热部署了。
    注意:使用热部署的时候,需要IDE编译类后才能生效,你可以打开自动编译功能,这样在你保存修改的时候,类就自动重新加载了。

  • 相关阅读:
    现代软件工程 第一章 概论 第4题——邓琨
    现代软件工程 第一章 概论 第9题——邓琨
    现代软件工程 第一章 概论 第7题——张星星
    现代软件工程 第一章 概论 第5题——韩婧
    hdu 5821 Ball 贪心(多校)
    hdu 1074 Doing Homework 状压dp
    hdu 1074 Doing Homework 状压dp
    hdu 1069 Monkey and Banana LIS变形
    最长上升子序列的初步学习
    hdu 1024 Max Sum Plus Plus(m段最大子列和)
  • 原文地址:https://www.cnblogs.com/cag2050/p/6867552.html
Copyright © 2011-2022 走看看