写在前面
听说spring全家桶中有一个项目叫做SpringBoot,开发起来丝丝润滑。这个系列是我在学习过程中记录的笔记。谨防遗忘。期间不乏有参考各位大侠。先在此道谢。
SpringBoot官方手册:https://docs.spring.io/spring-boot/docs/1.5.15.RELEASE/reference/htmlsingle/
本片简单介绍一下常用的web服务用到的操作。
返回json对象
1、在SpringBoot中只需要使用 @RestController 注解就会自动返回json数据。下面是demo
创建包:cn.edu.zua.demo.entity.domain
用户信息业务实体
package cn.edu.zua.demo.entity.domain;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import java.io.Serializable;
/**
* UserInfoDO
* 用户信息业务实体
*
* @author ascend
* @date 2018/9/5 11:03.
*/
public class UserInfoDO implements Serializable {
private static final long serialVersionUID = 2740544421155496415L;
/**
* 主键,自增
*/
private Long id;
/**
* 用户昵称
*/
private String userName;
/**
* 加密后的密码
*/
private String password;
/**
* 用户角色,系统管理员,普通管理员
*/
private String roleName;
public UserInfoDO() {
// 空构造
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
@Override
public String toString() {
return ReflectionToStringBuilder.toString(this);
}
}
Controller代码
package cn.edu.zua.demo.controller;
import cn.edu.zua.demo.entity.domain.UserInfoDO;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* HelloWorldController
*
* @author adeng
* @date 2018/9/4 16:46.
*/
@RestController
public class HelloWorldController {
@RequestMapping(path = "/getUser")
public UserInfoDO getUser() {
UserInfoDO user = new UserInfoDO();
user.setId(1001L);
user.setUserName("damon");
user.setPassword("123456");
user.setRoleName("管理员");
return user;
}
}
2、运行代码,访问:http://localhost:8080/getUser 就可以看到效果了(浏览器端可以安装JSONView类似的插件)
添加Filter
1、SpringBoot 添加自定义Filter很简单,只需要在一个普通的类上添加@Configuration 即可
添加包:cn.edu.zua.demo.config
创建WebConfiguration类:
package cn.edu.zua.demo.config;
import org.apache.catalina.filters.RemoteIpFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
* WebConfiguration
* 自定义Filter
*
* @author adeng
* @date 2018/9/5 10:09.
*/
@Configuration
public class WebConfiguration {
@Bean
public RemoteIpFilter remoteIpFilter() {
return new RemoteIpFilter();
}
@Bean
public FilterRegistrationBean testFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new MyFilter());
registration.addUrlPatterns("/*");
registration.addInitParameter("paramName", "paramValue");
registration.setName("MyFilter");
registration.setOrder(1);
return registration;
}
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("MyFilter.init");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
System.out.println("这是我的过滤器 MyFilter,url :" + request.getRequestURI());
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
System.out.println("MyFilter.destroy");
}
}
}
2、这样在执行每次请求都能进行预先进行一些处理了,非常的方便
添加自定义配置
1、在项目的开发过程中,我们往往需要把一些变量抽取出来统一配置。在SpringBoot中也是简单的一批,在第一篇中我们已经注意到了,在 src/main/resources 下有一个默认生成的配置文件:application.properties 。这个文件就是我们配置变量的地方。
2、编写配置文件:application.properties
demo.author=damon
demo.author.age=27
3、创建包:cn.edu.zua.demo.controller.test
新建类:DemoProperties
package cn.edu.zua.demo.controller.test;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* DemoProperties
*
* @author adeng
* @date 2018/9/5 14:19.
*/
@Component
public class DemoProperties {
@Value("${demo.author}")
private String author;
@Value("${demo.author.age}")
private Integer age;
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return ReflectionToStringBuilder.toString(this);
}
}
4、在HelloWorldController 中添加DemoProperties 成员变量并注入即可使用,如下:
package cn.edu.zua.demo.controller;
import cn.edu.zua.demo.controller.test.DemoProperties;
import cn.edu.zua.demo.entity.domain.UserInfoDO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* HelloWorldController
*
* @author adeng
* @date 2018/9/4 16:46.
*/
@RestController
public class HelloWorldController {
private DemoProperties demoProperties;
@Autowired
public void setDemoProperties(DemoProperties demoProperties) {
this.demoProperties = demoProperties;
}
@RequestMapping(path = "/getAuthor")
public DemoProperties getAuthor() {
System.out.println(demoProperties.toString());
return demoProperties;
}
}
5、启动服务器,访问:http://localhost:8080/getAuthor 即可看到结果。
日志配置
1、配置日志地址和级别
在:application.properties文件中进行配置
# log
logging.path=/logs/demo/
#logging.level.root=DEBUG
logging.level.cn.edu.zua.demo=DEBUG
#logging.level.org.springframework.web=DEBUG
各位看官,如果觉得写的不错就点个赞吧。求你了。
看这里,看这里
文章总目录:博客导航
码字不易,尊重原创,转载请注明:https://blog.csdn.net/u_ascend/article/details/82387772