zoukankan      html  css  js  c++  java
  • 2019-04-05 Spring Boot学习记录

    1. 使用步骤

      ① 在pom.xml 增加父级依赖(spring-boot-starter-parent)

      ② 增加项目起步依赖,如spring-boot-starter-web

      ③ 配置JDK版本插件

      ④ 增加入口类

    public static void main(String[] args){
        SpringApplication.run(当前类.class,args)
    }

      ⑤ 给main所在类增加注解@EnableAutoConfiguration声明启用自动配置

    2. @EnableAutoConfiguration

    • 该注解声明启用自动配置
    • 自动配置的类位于org.springframework.boot.autoconfigure包下
    • 相对应的功能自动配置位于对应的子包下
    • 使用属性exclude={XXXAutoConfiguration.class}关闭对应的自动配置

    3. 改变banner(启动时的字符图)
      ① 借助工具生成自己的文本图案http://www.patorjk.com/software/taag/#p=display&f=Graffiti&t=
      ② 放入banner.txt
      ③ 把文件放入resource路径下

    4. 全局配置文件

    • 名字必须是 application 如application.properties或application.yml
    • 一般放入类路径下或resource路径下
    • server.port 修改服务器容器端口
    • server.context-path 修改服务根路径
    • 自定义属性值(如 book.name=SpringBoot),可以通过@Value("${book.name}")注入到属性中;或采用类型安全的配置,先在类增加注释@ConfigurationProperties(prefix="book"),再通过同名属性(需要有setter、getter)来得到值
    • Profile配置:使用application-*.properties作为各个环境下的配置,通过application.properties中设置 spring.profile.active=后缀名来指定活动的Profile
    • logging.config 指定日志文件 spring.mvc.view.prefix 配置Web前缀spring.mvc.view.suffix 配置Web后缀spring.resources.static-locations=classpath:XXX 配置静态资源的路径spring.http.encoding.force=true 开启response编码设置为utf-8

    5. 自动配置的原理

    • 通过查找是否包含某个类来启用对应的配置类

    6. 创建父级工程
      ① 父工程的packaging必须是POM
      ② 通过Ctrl点击parent查看原来jar包的管理,把它放入到当前pom中

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.1.4.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>                

      如果出现版本丢失,需要加上type和scope标签

      ③ 把相关的插件都放入到父pom中
      ④ 子工程的parent改为自己的父级工程

    7. Spring Boot整合测试
      ① pom引入 junit和spring-boot-starter-test
      ② 测试类指定要测试的类 @SpringBootTest(classes=XxxController.class)
      ③ 测试类指定执行测试的类 @RunWith(SpringJUnit4ClaaRunner.class)
      ④ 测试类跟web整合 @WebAppConfiguration
      ⑤ 注入测试对象

    @Autowired
    private XxxController xxxController;

      ⑥ 编写测试方法,使用TestCase进行断言

    8. 注解

    • @EnableAutoConfiguration 启动自动配置
    • @ComponentScan("包名") 自动扫描的包(默认扫描当前包和当前包的子包,当启动自动配置的类与要使用Spring组件注解的类不在同一包下,则需要增加该注解)
    • @SpringBootApplication 代替上面两个注解的组合注解(默认扫描当前包和当前包的子包)@ResponseBody 表示返回的是Restful内容,不使用该注解会进行跳转
    • @Controller 声明该类是一个Controller类
    • @RestController 声明该类是一个每个返回结果都是Restful内容的Controller类,方法里可以省略@ResponseBody注解
    • @PathVariable 把mapping中{}的值赋值给变量 

    9. 日志使用

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    10. 配置为开发模式

    • 可以不需要每次重启
    • 加入两个依赖(springloaded、spring-boot-devtools)即可

    11. WEB项目访问静态资源

    • 默认情况下,Spring Boot从classpath的/static,/public或/META-INF/resources文件夹或从ServletContext根目录提供静态内容
    • 也可以通过全局配置设置静态目录

    12. 自定义消息转换器

    • 只需要在类中添加消息转换器的@Bean,就会被SpringBoot自动加入到容器中
    • SpringBoot自动配置了消息转换器

    13. 使用FastJson解析Json数据
      ① 引入FastJson的依赖包
      ② 配置FastJson

    •   让启动类继承WebMvcConfigurerAdapter,重写消息转换器配置方法,方法中把FastJson消息转换器放入集合中
    •   使用@Bean注入HttpMessageConverters

    14. 自定义拦截器
      ① 继承WebMvcConfigurerAdapter,并增加@Configuration声明这是一个配置
      ② 重写addInterceptors方法
      ③ 写自己的拦截器 new HandlerInterceptor()
      ④ 把自己的拦截器加入到集合中,并增加拦截路径
      ⑥ 在入口类中增加扫描

    15. 全局异常处理器(使用aop)
      ① 定义一个处理类,使用@ControllerAdvice声明通知
      ② 增加方法,使用@ExceptionHandler声明处理哪些异常
      ③ 增加@ResponseBody声明返回值

    16. 异步调用
      ① 增加服务实现类增加注解@Service
      ② 方法中增加注解@Async声明启动线程执行
      ③ 启动类中增加扫描注解
      ④ 启动类增加@EnableAsync开启异步调用

    17. Spring Boot整合JSP
      ① 需要创建web工程
      ② 增加依赖spring-boot-starter-tomcat、tomcat-embed-jasper
      ③ 增加插件来省略web.xml

    <build>
        <plugins>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugins>
    </build>        

      ④ 全局配置文件配置前缀后缀

    18. Spring Boot整合Freemarker
      ① 引入依赖spring-boot-starter-freemarker
      ② 在resource的templates放置模板文件或者通过全局配置进行设置

    19. Spring Boot整合Thymeleaf
      ① 引入依赖spring-boot-starter-thymeleaf
      ② 在resource的templates放置模板文件或者通过全局配置进行设置

    20. Spring Boot整合QuartZ

    21. Spring Boot整合JdbcTemplate

    22. Spring Boot整合Mybatis(xml方式)

      ① 引入mybatis-spring-boot-starter依赖、数据库jar依赖、阿里的连接池(druid-spring-boot-starter、druid)、 分页插件依赖(pagehelper-spring-boot-starter)
      ② 在全局配置文件中增加数据源配置、Mybatis的核心配置和Mapper配置的路径等、分页插件的配置
      ③ 增加Mybatis配置:在resource下放置Mybatis配置文件、Mapper配置文件
      ④ 启动类需要使用@MapperScan单独扫描Mapper接口类

    23. Spring Boot整合Mybatis(注解方式,在Mapper接口中使用注解而不是xml文件)
      ① 引入mybatis-spring-boot-starter依赖、数据库jar依赖、阿里的连接池(druid-spring-boot-starter、druid)、 分页插件依赖(pagehelper-spring-boot-starter)
      ② 启动类使用@MapperScan单独扫描Mapper接口类

    24. Spring Boot区分多数据源

    • 方式:
      • 通过包来区分(推荐)
      • 使用注解来区分
    • 过程:
      • 1.在配置文件中增加自定义属性来存放数据库连接信息
      • 2.增加不同数据源的数据源配置类(@Configuration),使用@MapperScan配置扫描的Mapper包和使用的session工厂;配置类中增数据库相关的注入bean
      • 3.在Mapper接口类中使用@Qualifier("数据源")选择数据源

    25. Spring Boot事务管理

    • 使用@Transactional注解

    26. Spring Boot整合JPA(Hibernate实现)

    27. Spring Boot整合Mail

    28. Spring Boot打包发布
      ① POM需要时war类型
      ② 需要把spring-boot-starter-tomcat的scope设置为provided
      ③ 让启动类继承SpringBootServletInitializer
      ④ 重写Cconfigure,通过参数指定启动类 builder.source(XXX.class)
      ⑤ run as Maven
      ⑥ 把war包放入tomcat

     

  • 相关阅读:
    腾讯电脑管家创始刘钊:教你如何手撕破解一个木马
    【渗透笔记】拿下复旦大学的艰难过程
    新博客在SEO方面需要注意哪几点?
    【渗透课程】第七篇-上传漏洞之绕过上传漏洞
    【渗透课程】第八篇-上传漏洞之文本编辑器上传
    【渗透课程】第六篇-上传漏洞之解析漏洞
    【渗透课程】第五篇-SQL注入的原理
    【渗透课程】第四篇-Web安全之信息探测
    【渗透课程】第三篇-体验http协议的应用
    三星的高效会议原则
  • 原文地址:https://www.cnblogs.com/WongHugh/p/10659964.html
Copyright © 2011-2022 走看看