Springboot 手动搭建项目 --redis配置&日志完善+用户名

项目git网址:https://github.com/David-BIQI/manage.git(项目使用比较新的springboot2.0 还有jdk8 )

参照的代码规范:https://github.com/xwjie/PLMCodeTemplate.git (这个是一套能够落地的代码规范,跟着风哥学习很多)

redis配置

  • 如何配置
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-redis</artifactId>
</dependency>
#redis设置
  redis:
    host: localhost
    port: 6379
    database: 0
  • redis的格式转换

也有转成json存放的,写的demo中就有stringRedisTemplate存放的,下面是序列化的使用

package com.common.redis;

import org.springframework.core.convert.converter.Converter;
import org.springframework.core.serializer.support.DeserializingConverter;
import org.springframework.core.serializer.support.SerializingConverter;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.SerializationException;

/**
 * redis序列化的工具类
 */
public class RedisObjectSerializer implements RedisSerializer<Object> {

  private Converter<Object, byte[]> serializer = new SerializingConverter();
  private Converter<byte[], Object> deserializer = new DeserializingConverter();

  static final byte[] EMPTY_ARRAY = new byte[0];

  @Override
  public Object deserialize(byte[] bytes) {
    if (isEmpty(bytes)) {
      return null;
    }

    try {
      return deserializer.convert(bytes);
    } catch (Exception ex) {
      throw new SerializationException("Cannot deserialize", ex);
    }
  }

  @Override
  public byte[] serialize(Object object) {
    if (object == null) {
      return EMPTY_ARRAY;
    }

    try {
      return serializer.convert(object);
    } catch (Exception ex) {
      return EMPTY_ARRAY;
    }
  }

  private boolean isEmpty(byte[] data) {
    return (data == null || data.length == 0);
  }
}
package com.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

import com.biqi.dto.UserDto;
import com.common.redis.RedisObjectSerializer;

@Configuration
public class RedisConfig {

    @Bean
    JedisConnectionFactory jedisConnectionFactory() {
        return new JedisConnectionFactory();
    }

    @Bean
    public RedisTemplate<String, UserDto> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, UserDto> template = new RedisTemplate<String, UserDto>();
        template.setConnectionFactory(jedisConnectionFactory());
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(new RedisObjectSerializer());
        return template;
    }

}
  • redis的读与取,这样就能实现redis中的简单的读写功能
    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @Autowired
    private RedisTemplate<String, UserDto> redisTemplate;

    public String saveAndGet(String name) {
        stringRedisTemplate.opsForValue().set(name, name);
        String temp = stringRedisTemplate.opsForValue().get(name);
        return temp;
    }

    public Boolean saveUserBySerializer(Integer id) {
        User user = userService.getUserByid(id);
        notNull(user,"用户信息不存在");
        UserDto temp = new UserDto();
        temp.setName(user.getName());
        temp.setPhone(user.getPhone());
        redisTemplate.opsForValue().set(user.getName(), temp);

        return true;
    }

日志的完善,

  • 如何写好日志 晓风轻 项目aop的修改

1.不要依赖debug,多依赖日志。

别人面对对象编程,你面对debug编程。有些人无论什么语言,最后都变成了面对debug编程。哈哈。这个习惯非常非常不好!debug会让你写代码的时候偷懒不打日志,而且很浪费时间。改掉这个恶习。

2. 代码开发测试完成之后不要急着提交,先跑一遍看看日志是否看得懂。

日志是给人看的,只要热爱编程的人才能成为合格程序员,不要匆匆忙忙写完功能测试ok就提交代码,日志也是功能的一部分。要有精益求精的工匠精神!

  • local怎么的使用,完善日志,在filter的时候判断得到登录用户的用户名,放入到MD5中,然后在log日志中添加上用户的信息
    @Override
        public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain filterChain)
                throws IOException, ServletException {
            HttpServletRequest request = (HttpServletRequest) srequest;
            String url = request.getRequestURI();
            // Login的时候跳过,不然都进入其他
            if (LOGIN_URL.equals(url)) {
                System.out.println("这是登录的方法咯 ");
                filterChain.doFilter(srequest, sresponse);
            } else {
                HttpSession session = request.getSession(true);
                if (session == null) {
                    throw new UnloginException();
                }
                // 从session中获取用户信息放到工具类中
                String userToken = (String) session.getAttribute(UserUtil.KEY_USER);
                UserUtil.setUser(userToken);
                filterChain.doFilter(srequest, sresponse);
            }
        }
    public static void setUser(String userid) {
        tlUser.set(userid);
        // 把用户信息放到log4j
        MDC.put(KEY_USER, userid);
    }
    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
            <pattern>%d{MM-dd HH:mm:ss} %X{user} [%thread] %-5level-%logger{50} -%msg%n</pattern>
        </encoder>
    </appender>

效果如下

这样日志用户信息基本完成,不过要写好日志,还有一番功夫需要做,一看日志就知道业务实现,成功失败的次数等等,pick myself up !!!

原文地址:https://www.cnblogs.com/xiebq/p/9231845.html

时间: 2024-11-05 13:31:46

Springboot 手动搭建项目 --redis配置&日志完善+用户名的相关文章

Springboot 手动搭建项目 --初始篇

最近一直在学springboot和Cloud,互联网公司现在也更倾向于微服务这一块,前景是一篇光明的,特别是在springboot上开发的Cloud的部分,是一套分布式的整体解决方案,学好这一块至少这几年都很吃香: 既然学习很久,落地实践一下为好: 项目git网址:https://github.com/David-BIQI/manage.git 参照的代码规范:https://github.com/xwjie/PLMCodeTemplate.git (这个是一套能够落地的代码规范,跟着风哥学习很

bundle is not defined 手动搭建项目架构(一)

bundle is not defined 报错,即找不到 bundle.js,filename: 'bundle.js',//输出的文件名(将其所依赖的js打包成bundle.js) 创建的webpack.config.js文件 bundle.js要用引号引起来 //以js文件作为入口文件 相对路径保证文件的正确性 //在package.json中加入一个build脚本,指定config文件,调用项目内部的webpack const path = require('path') //path是

rocketmq4.4配置日志路径等级

公司使用了最新的rocketmq框架,然后2天日志跑了快2个g.... 无奈网上只有4.2的教程...只好自己研究 环境rocketmq4.4 springboot 看源码找到配置日志等级和路径的地方(4.4和4.2是有区别的!) 可以看出是读取系统参数,所以,只要在启动的时候设置即可(在spingboot中配置无效) -Drocketmq.client.logRoot=E:\logs -Drocketmq.client.logLevel=ERROR 服务器看环境配置,就是修改tomcat的jv

SpringBoot系列教程之Redis集群环境配置

之前介绍的几篇redis的博文都是基于单机的redis基础上进行演示说明的,然而在实际的生产环境中,使用redis集群的可能性应该是大于单机版的redis的,那么集群的redis如何操作呢?它的配置和单机的有什么区别,又有什么需要注意的呢? 本篇将主要介绍SpringBoot项目整合redis集群,并针对这个过程中出现的问题进行说明,并给出相应的解决方案 I. 环境相关 首先需要安装redis集群环境,可以参考博文:redis-集群搭建手册 然后初始化springboot项目,对应的pom结构如

第一次搭建springboot+dubbo+zookeeper项目小结

第一次用IDEA搭建springboot+dubbo+zookeeper项目中碰到了一些问题,现在记录下来, 第一步:项目准备工作 工具IDEA,先下载安装zookeeper和dubbo   Zookeeper下载地址:https://zookeeper.apache.org/releases.html,我下载最新的release 3.5.7 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是

手动搭建一个完整的angular实践项目

以下我记录如何简单的搭建一个angular项目, 比较适合有前端基础,但又没有使用过angular的前端开发人员,因为我看到网上的教程又都配套的使用了一些其他框架或者打包工具,以及进行一些复杂的开发环境配置,不利于初级的人学习和理解.后续我也会陆续写几篇结合不同工具框架,以及在混合app开发中搭建angular框架项目. 应用场景: 基于angular的PC端web项目,采用require加载资源,使用angularAMD和angularCSS实现按需加载angular的controllers和

Spring-Boot快速搭建web项目详细总结

最近在学习Spring Boot 相关的技术,刚接触就有种相见恨晚的感觉,因为用spring boot进行项目的搭建是在太方便了,我们往往只需要很简单的几步,便可完成一个spring MVC项目的搭建,感觉就是下图: 好,下面就本人搭建项目的过程简单说说如何快速搭建一个spring MVC项目,相信我,spring-boot这趟车,你上了根本就停不下来了! 下面是这篇博客的主要内容: 1.spring boot 介绍 2.spring boot 项目快速搭建 3.spring-boot中单元测试

SpringBoot 学习:(一)快速搭建项目

一.简介 从 Spring Boot 项目名称中的 Boot 可以看出来,Spring Boot 的作用在于创建和启动新的基于 Spring 框架的项目.它的目的是帮助开发人员很容易的创建出独立运行和产品级别的基于 Spring 框架的应用.Spring Boot 会选择最适合的 Spring 子项目和第三方开源库进行整合.大部分 Spring Boot 应用只需要非常少的配置就可以快速运行起来. Spring Boot 包含的特性如下: 创建可以独立运行的 Spring 应用. 直接嵌入 To

使用idea+springboot+Mybatis搭建web项目

使用idea+springboot+Mybatis搭建web项目 springboot的优势之一就是快速搭建项目,省去了自己导入jar包和配置xml的时间,使用非常方便. 1.创建项目project,然后选择Spring initializr,点击下一步  2.按图示进行勾选,点击下一步,给项目起个名字,点击确定. 3.项目生成有,点击add as maven project,idea 会自动下载jar包,时间比较长  4.项目生成后格式如下图所示:  其中DemoApplication.jav