SpringBoot学习笔记

SpringBoot学习笔记一

一、添加自定义 Filter

参考博客:https://www.cnblogs.com/chenhonggao/p/9027591.html

  1. 新建一个类实现 Filter接口。
  2. 在该类上打上 “@WebFilter(filterName = “testFilter1”, urlPatterns = “/*”)” 注解。"@Order(1)" 注解表示filter的执行顺序,数值越小越先执行。
  3. 在项目入口类上打上 “@ServletComponentScan” 注解。

自定义Filter类:

```
package com.jczry.springbootDemo.filter;

import lombok.extern.slf4j.Slf4j;
import org.springframework.core.annotation.Order;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


/**
 * @program: springbootdemo
 * @description:
 * @author: chen jie
 * @create: 2019-02-13 13:54
 */
@WebFilter(urlPatterns = "/user/list/*", filterName = "tokenFilter")
@Order(1)
@Slf4j
public class TokenFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig){
        log.info("Token filter init()...........");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) 
                            throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse resp = (HttpServletResponse) servletResponse;
        log.info("request url:{}", request.getRequestURL());
        String token = request.getParameter("token");
        if("".equals(token) || null == token){
            resp.setCharacterEncoding("UTF-8");
            resp.setContentType("text/html;charset=utf-8");
            resp.getWriter().write("token error");
        }else {
            filterChain.doFilter(servletRequest, servletResponse);
        }
    }

    @Override
    public void destroy() {

    }
}

```

项目入口类:

```
package com.jczry.springbootDemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ServletComponentScan
public class SpringbootDemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringbootDemoApplication.class, args);
	}

}
```

Filter返回JSON字符串

  1. 引入FastJSON。
    
    	com.alibaba
    	fastjson
    	1.2.38
    
    
  2. 获取response的输出流。
  3. 将要返回的对象转化成JSON字符串。
  4. 写入输出流。
    PrintWriter out = resp.getWriter();
    ResultDto resultDto = new ResultDto();
    resultDto.setCode("10001");
    resultDto.setMsg("Token error");
    String toJSONString = JSON.toJSONString(resultDto);
    out.write(toJSONString);
    

二、自定义拦截器 Interceptor

  1. 新建自定义拦截器类实现 HandlerInterceptor 接口。
    public class LogInterceptor implements HandlerInterceptor {
        long start;
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, 
                                Object handler) {
            start = System.currentTimeMillis();
            return true;
        }
    
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, 
                                Object handler, ModelAndView modelAndView) {
            long end = System.currentTimeMillis();
            log.info("interceptor cost:{}", (end - start)/1000.0);
        }
    }
    
  2. 新建配置类 实现 WebMvcConfigurer 接口, 重写 addInterceptors() 方法。
    @Configuration
    public class InterceptorConfigurer implements WebMvcConfigurer{
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            InterceptorRegistration registration = registry.addInterceptor(new LogInterceptor());
            registration.addPathPatterns("/user/**");
            registration.excludePathPatterns("/login");
        }
    }
    

三、SpringBoot整合Mybatis

参考博客:https://www.cnblogs.com/peterxiao/p/7779188.html

  1. Maven 引入 Mybatis 和 Druid。
    mybatis:
    
    	org.mybatis.spring.boot
    	mybatis-spring-boot-starter
    	1.3.1
    
    
    	com.alibaba
    	druid
    	1.1.5
    
    
  2. 配置文件配置 Mybatis。
    application-dev.yml:
    server:
      port: 8088
    
    spring:
      datasource:
        username: root
        password: xxxxx
        url: jdbc:mysql://172.x.x.x:3316/xxx?useSSL=false
        driver-class-name: com.mysql.cj.jdbc.Driver
        type: com.alibaba.druid.pool.DruidDataSource
    
    mybatis:
      mapper-locations: classpath:mapper/*.xml
    #  type-aliases-package: com.example.entity  com.jczry.springbootDemo.domain.UserMapper
    
    #showSql
    logging:
      level:
        com.jczry.springbootDemo.domain: debug
    
  3. 编写dao层接口和mapper.xml文件,与原SSM写法相同。
    
    
    
        
            
            
        
        
    
    
  4. 在项目入口类上打上 @MapperScan(“com.jczry.springbootDemo.domain”) 注解,“com.jczry.springbootDemo.domain” 为dao层接口所在包。
    @SpringBootApplication
    @ServletComponentScan//自定义Filter打的注解
    @MapperScan("com.jczry.springbootDemo.domain")//mapper打的注解
    public class SpringbootDemoApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(SpringbootDemoApplication.class, args);
    	}
    
    }
    

四、整合Dubbo

  1. 导入maven依赖
    
    
        com.alibaba.spring.boot
        dubbo-spring-boot-starter
        2.0.0
    
    
        org.apache.zookeeper
        zookeeper
        3.4.13
        
            
            
                org.slf4j
                slf4j-api
            
            
                org.slf4j
                slf4j-log4j12
            
        
    
    
        com.101tec
        zkclient
        0.11
    
    
  2. 在实现类上打上 @Compose 和 @Service(dubbo的service)注解
    @Component
    @Service(interfaceClass = GetTokenService.class)
    public class GetTokenServiceImpl implements GetTokenService {
        @Override
        public String sayHello() {
            return "hello world";
        }
    }
    
  3. SpringBoot启动类上打 @EnableDubboConfiguration 注解
    @SpringBootApplication
    @EnableDubboConfiguration
    public class AuthApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(AuthApplication.class, args);
        }
    
    }
    
  4. 配置文件
    spring:
      dubbo:
        application:
          name: open-auth-provider
          id: open-auth-provider
        protocol:
          id: dubbo
          name: dubbo
          port: 20880
        scan:
          base-packages: com.x.x.x.auth.service
        registry:
          address: zookeeper://172.x.x.x:2181?backup=172.x.x.x:2181,172.x.x.x:2181
        provider:
          validation: true
    

你可能感兴趣的:(SpringBoot,Java)