SpringBoot系列--(2)--1.x Web服务开发

版权声明:编码不易,禁止转载 https://blog.csdn.net/u_ascend/article/details/82387772

写在前面

        听说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

猜你喜欢

转载自blog.csdn.net/u_ascend/article/details/82387772
今日推荐