spring boot web开发很简单,包括json输出,filter,log,properties等
使用spring开发项目时,
spring boot中使用@RestController标注类,便可以使类中的方法返回json格式的数据
@RequestMapping("/getUser")
public Map getUser(){
Map map = new HashMap<>();
map.put("username", "张三");
map.put("password", "123456");
return map;
}
Spring Boot默认实现了OrderedCharacterEncodingFilter 和 HiddenHttpMethodFilter,如果需要使用自定义的Filter,步骤如下:
- 实现Filter接口,重写接口中的方法
- 添加@Configuration 注解,将自定义Filter加入过滤链
@Configuration
public class WebFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("容器初始化!");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) servletRequest;
System.out.println("请求地址是:" + req.getRequestURI());
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
System.out.println("容器销毁!");
}
}
在spring boot中,如果需要使用自定义的property的文件,则需要在类路径下创建application.properties配置文件,然后添加自己的配置,配置文件如下:
com.lt.username=黄三
com.lt.usercode=1234
实体类如下:
@Component
public class User {
@Value("${com.lt.username}")
private String username;
@Value("${com.lt.usercode}")
private String usercode;
public String getUsername() {
return username;
}
public String getUsercode() {
return usercode;
}
public void setUsername(String username) {
this.username = username;
}
public void setUsercode(String usercode) {
this.usercode = usercode;
}
}
controller如下:
@RestController
public class HelloWorld {
@Autowired
private User user;
@RequestMapping("/getInfo")
public User getInfo(){
return user;
}
}
一个以数据为中心的数据描述语言,在spring boot中可以用作配置文件,来简化配置文件的书写;具体可以参考:YAML快速入门
spring boot中默认集成了LogBack,无需其他配置,就会将日志打印到控制台;但如果需要将日志输出到硬盘上的日志文件中时,则需要在application.properties中进行配置,配置如下:
#表示将日志输出至D盘log文件下
logging.path=D:/log
logging.level.com.favorites=DEBUG
logging.level.org.springframework.web=INFO
logging.level.org.hibernate=ERROR
配置文件中参数说明
具体可以参考Spring Boot系列——日志配置
在程序中需要创建Logger对象,我使用的是sl4j
@RestController
public class HelloWorld {
private final static Logger log = LoggerFactory.getLogger(HelloWorld.class);
@RequestMapping("/log")
public void log(){
log.info("spring boot 日志");
}
}
org.springframework.boot
spring-boot-starter-data-jpa
mysql
mysql-connector-java
在application.yml中配置
spring:
#配置数据源信息
datasource:
url: jdbc:mysql://localhost:3306/learner?serverTimezone=UTC&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
#配置JPA
jpa:
hibernate:
ddl-auto: update
show-sql: true
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String username;
private String password;
//get和set省略
}
public interface UserDao extends JpaRepository {}
@RunWith(SpringRunner.class)
@SpringBootTest
public class JPATest {
@Autowired
private UserDao userDao;
@Test
public void testSave() throws Exception {
User user = new User();
user.setUsername("张翔");
user.setPassword("124");
userDao.save(user);
}
}
由于mysql的版本是8,所以和之前的版本有区别:首先驱动换了,不是com.mysql.jdbc.Driver而是’com.mysql.cj.jdbc.Driver’;此外mysql8.0是不需要建立ssl连接的,需要显示关闭;最后需要设置时区,即:
spring:
#配置数据源信息
datasource:
url: jdbc:mysql://localhost:3306/learner?serverTimezone=UTC&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
Spring Data Jpa 还有很多功能,比如封装好的分页,可以自己定义SQL,主从分离等等,可以参考:Spring Data JPA、Spring Boot整理——Spring Data JPA、使用 Spring Data JPA 简化 JPA 开发
Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 JSP,Velocity,FreeMaker 等,它也可以轻易的与 Spring MVC 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用;说了这么多,其实还是推荐前后分离,使用新的vue等前端框架
org.springframework.boot
spring-boot-starter-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
${msg}
package com.lt.springboot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.Map;
/**
* @ClassName Index
* @Description TODO
* @Author lt
* @Date 2019-04-05
**/
@Controller
public class Index {
@RequestMapping("/index")
public String index(Map param){
param.put("msg", "spring boot整合freemarker");
return "index";
}
}
Spring 项目建议使用 Maven/Gradle 进行构建项目,相比 Maven 来讲 Gradle 更简洁,而且 Gradle 更适合大型复杂项目的构建
WebJars 是将客户端(浏览器)资源(JavaScript,Css等)打成 Jar 包文件,以对资源进行统一依赖管理。WebJars 的 Jar 包部署在 Maven 中央仓库上
我们在开发 Java web 项目的时候会使用像 Maven,Gradle 等构建工具以实现对 Jar 包版本依赖管理,以及项目的自动化管理,但是对于 JavaScript,Css 等前端资源包,我们只能采用拷贝到 webapp 下的方式,这样做就无法对这些资源进行依赖管理。那么 WebJars 就提供给我们这些前端资源的 Jar 包形势,我们就可以进行依赖管理
org.webjars
jquery
3.4.1