SpringBoot+freemarker(入门)

/ 后端 / 无站内评论 / 854浏览

前言:

几个月前刚进公司有个学习计划,也就是Spring Boot。但是连续敢项目太忙了没时间。最近公司准备放年假了,稍微有点空余时间就学习了下。
Spring Boot公司有些项目本来是打算用它搭的,当时时间比较紧,为了稳。所以没用~
今天周末先简单总结一下基础知识,等有时间再慢慢学习总结吧。

Spring Boot 概述

首先,Spring Boot是一个框架,主要理念就是消除项目中大量的配置文件,使项目更加短小精悍。我们知道 java 的开发显得很笨重:繁多的配置、开发效率低下、复杂的布署流程以及第三方技术集成难度大。所以说,spring boot就是在此环境下产生的。

Spring Boot 的核心功能

独立运行的Spring 项目
Spring Boot 可以以jar包的形式独立运行,运行一个Spring Boot 项目只需要通过 java -jar xx.jar 来运行。
内嵌Servlet 容器
Spring Boot 可以选择内嵌Tomcat、Jetty或Undertow,这样我们无须以war包形式部署项目。
提供starter简化Maven 配置
Spring 提供了一系列的starter pom 来简化Maven 的依赖加载。
自动配置Spring
Spring Boot 会根据在类路径中的jar包、类,为jar包里的类自动配置Bean,这样会极大地减少我们要使用的配置。Spring Boot只考虑了大多数的场景,并不是所有的场景。
准生产的应用监控
Spring Boot 提供基于http、ssh、telnet对运行时的项目进行监控。
无代码生成和xml配置
Spring Boot不是借助代码生成来实现的,而是通过条件注解来实现的,这是spring 4.x的新特性。Spring 4.x提倡使用Java配置和注解配置组合,而Spring Boot不需要任何xml配置即可实现Spring 的所有配置。
Spring Boot 的优缺点

优点:

  1. 快速构建项目;
  2. 对主流开发框架的无配置集成;
  3. 项目可以独立运行,无须外部依赖Servlet容器;
  4. 提供运行时的应用监控;
  5. 极大地提高了开发、部署效率;
  6. 与云计算的天然集成。

    缺点:

  7. 书籍文档较少且不够深入;
  8. 如果你不认同Spring 框架。

IDEA搭建Spring Boot

我用的是idea,所以就只总结在idea下的搭建方式

1.File>NEW-project

2.新建Spring Initializr 项目

3. 填写项目信息

next

4.选择项目使用的技术

如果freemarker模版没选,可以在创建项目之后pom.xml中添加

<?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>cn.sanii</groupId>
<artifactId>san</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>san</name>
<description>Demo project for Spring Boot</description>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>

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

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>


</project>

一路next即可

5. 项目架构及依赖

6. 添加测试控制器。直接在入口类中编写。

package cn.sanii.san.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

/**
* @author: shouliang.wang
* @description:
* @date:created in 16:28 2018/2/2
* @modified by
*/
@Controller
public class san {

@RequestMapping("/hello")
public String hello(Model model) {
model.addAttribute("name","SAn");
model.addAttribute("msg","hello freemark");
return "hello";
}

}


在recourse目录下的application.properties中配置freemarker

########################################################
###FREEMARKER (FreeMarkerAutoConfiguration)
########################################################
spring.freemarker.allow-request-override=false
spring.freemarker.cache=true
spring.freemarker.check-template-location=true
spring.freemarker.charset=UTF-8
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=false
spring.freemarker.expose-session-attributes=false
spring.freemarker.expose-spring-macro-helpers=false
#spring.freemarker.prefix=
#spring.freemarker.request-context-attribute=
#spring.freemarker.settings.*=
spring.freemarker.suffix=.ftl
spring.freemarker.template-loader-path=classpath:/templates/
#comma-separated list
#spring.freemarker.view-names= # whitelist of view names that can be resolved

在templates中创建一个ftl文件(freemarker格式页面)

7. 启动类

package cn.sanii.san;

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

@SpringBootApplication
public class SanApplication {

public static void main(String[] args) {
SpringApplication.run(SanApplication.class, args);
}
}
@SpringBootApplication 等同于默认的属性的 @Configuration, @EnableAutoConfiguration and @ComponentScan。 
-- 注意,@ComponentScan 不能凭空使用。

热部署

当我们修改文件和创建文件时,都需要重新启动项目。这样频繁的操作很浪费时间,配置热部署可以让项目自动加载变化的文件,省去的手动操作。

在 pom.xml 文件中添加如下配置:

<!-- 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 没有该配置,devtools 不生效 -->
<fork>true</fork>
</configuration>
</plugin>
</plugins>

启动

成功

源码

链接: https://pan.baidu.com/s/1qYYtFmW 密码: r7mm

召唤蕾姆
琼ICP备18000156号

鄂公网安备 42011502000211号