SpringBoot

使用场景:1.有spring的地方 2. J2ee应用 3.微服务


@Controller:修饰class,用来创建处理http请求的对象

@RestController:Spring4之后加入的注解,原来在@Controller中返回json需要@ResponseBody来配合,如果直接用@RestController替代@Controller就不需要再配置

@ResponseBody,默认返回json格式。

@RequestMapping:配置url映射

 

请求类型

URL

说明

GET

/users

查询用户列表

Post

/users

创建一个用户

Get

/users/id

Id查询用户

Post

/users/id

Id更新用户

Delete

/users/id

Id删除用户

 

 

事务控制在service中,@transaction()  required support

 

异步任务:@EnableAsync 发送短信,邮件,消息推送,运维任务

定时任务:@EnableScheduling

拦截器:@Configuration   extends WebMvcConfigurerAdapter 

重写 addInterceptors

registry.addInterceptor(new OneInterceptor()).addPathPatterns(“/one/**”);

 

· 场景:由于用Spring boot编写了关于Ranger策略以及Hive脱敏相关的接口,并以http方式向外部提供。为了防止请求被非法模仿,因而编写了一个访问Ip 鉴权类,也就是设置了访问ip白名单,只有在白名单上的ip才可以访问接口。

· Spring boot自带HandlerInterceptor,可通过继承它来实现拦截功能,其的功能跟过滤器类似,但是提供更精细的的控制能力:在request被响应之前、request被响应之后、视图渲染之前以及request全部结束之后。我们不能通过拦截器修改request内容,但是可以通过抛出异常(或者返回false)来暂停request的执行。

 

/**

     * 在请求处理之前进行调用(Controller方法调用之前)调用,

     *  返回true 则放行, false 则将直接跳出方法

     */

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {

        String ip = getIpAddr(request);

        String ipStr = PropertyUtil.getProperty("ipWhiteList"); // 获取可以访问系统的白名单

        String[] ipArr = ipStr.split("\\|");

        List<String> ipList = java.util.Arrays.asList(ipArr);

 

        if (ipList.contains(ip)) {

            logger.info("the request ip is : " + ip);

            return true;

        } else {

            logger.error(ip + " is not contains ipWhiteList .......");

            response.setHeader("Content-type","text/html;charset=UTF-8");//向浏览器发送一个响应头,设置浏览器的解码方式为UTF-8

            String data = "您好,ip为" + ip + ",暂时没有访问权限,请联系管理员开通访问权限。";

            OutputStream stream = response.getOutputStream();

            stream.write(data.getBytes("UTF-8"));

            return false;

        }

}

 

Spring boot 整合 thymeleaf

 

Thymelead 常用使用方法:

基本使用方式  对象引用方式  时间类型转换  textutext  url  css js引入

Th:if  th:each th:swith th:case

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐