java一些知识点和常用方法

1 篇文章 0 订阅


前端

级联显示 el-cascader
级联想进行搜索 filterable

后端

设计表的时候,用冗余字段可以加快查询效率

elasticSearch 重点 GulimallElasticSearchConfig这个配置文件

powerDesigner

PowerDesigner数据库建模工具的使用
https://segmentfault.com/a/1190000038567913

PowerDesigner给字段加注解
https://blog.csdn.net/weixin_33733810/article/details/85992423

PowerDesigner显示code
https://www.cnblogs.com/fanmiao/p/4628296.html

工具类

BeanUtils.copyProperties(attr,attrEntity);

BeanUtils.copyProperties(attr,attrEntity);
这个是spring的工具类,用于拷贝同名属性

String.join

String.join
这个是拼接list的

compareTo()

compareTo()
JVM调优:-Xmx100m

JSONObject.parseObject(String,Class)

Json字符串转对象
JSONObject.parseObject(String,Class)

@注解类

@JsonFormat 改变data返回格式

@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone=“GMT+8”)
改变data返回格式

@Valid @Validated @BindingResult 数据校验

spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。
@Validated进行验证,@BindingResult可以获取校验错误信息

参考网址:https://blog.csdn.net/weixin_43770545/article/details/90237097

@ExceptionHandler 统一异常处理

统一异常处理@ExceptionHandler

@JsonInclude 对象中的属性如果为空,不返回给前端时

对象中的属性如果为空,不返回给前端时,可以在实体类的属性上写@JsonInclude(JsonInclude.Include.NON_EMPTY)

@TableField 对象中的属性如果在表里没有

对象中的属性如果在表里没有,可以用@TableField(exist = false)

@TableId mybatis-plus id

如果id自增:@TableId(type = IdType.AUTO)

@Builder 优雅的进行set赋值

lombok中的@Builder
可以优雅的进行set赋值
参考:https://blog.csdn.net/djrm11/article/details/104653877/

@ControllerAdvice 全局异常处理

全局异常处理

@Mapper和@Repository区别

@Repository需要在Spring中配置扫描地址,然后生成Dao层的Bean才能被注入到Service层中。
@Mapper不需要配置扫描地址,通过xml里面的namespace里面的接口地址,生成了Bean后注入到Service层中。

@Component

@Componnet是用在类上,声明这个类是一个组件被spring管理起来
用途:注入进spring容器中进行管理 和@controller 、@service、@repository
用法一致,只不过前面经常用,看到就联想到是控制层、服务层、持久层

@Bean

@Bean作用在方法上,一般标明返回的对象直接被Spring管理起来
使用:调用的时候和@Component一样,用@Autowired 调用有@Bean注解的方法,多用于第三方类无法写@Component的情况

可参考:Java @Bean 概念和使用


@Pointcut

概念:spring aop切点

举例:

//当使用到QhLog这个类时,会切入切点
@Pointcut("@annotation(net.qh.common.annotation.QhLog)")
    public void qhLog(){
        log.info("---注入用户操作日志切面---");
    }
 

可参考:运用Spring aop 切面记录日志


@Around

概念:通俗来说是调用@Pointcut 中的方法

举例:

@Around("qhLog()")

可参考:运用Spring aop 切面记录日志


@Aspect

不太懂

YML

context-path

server:
	servlet:
    	context-path: /xxx

context-path
应用的上下文路径,也可以称为项目路径,是构成url地址的一部分

在每个module的application.properties文件都可以配置server.context-path这个属性。开始使用spring
boot的时候没有注意这个属性,其实默认可以不配置,直接在controller层通过@RequestMapping来设定url的地址路径。

@RestController
@RequestMapping("/mqcp")
public class MQCPContorller {
    @Autowired
    MQCPServiceImpl mqcpService;

    @RequestMapping("/convert")
    public String convert(){
        mqcpService.convert();
        return "ok";
    }
}
如果server.context-path没有配,请求的url地址就是 localhost : port/mqcp/convert
如果server.context-path =/market/task”, 请求的url地址就是 localhost : port/market/task/mqcp/convert

Spring

大白话讲解Spring的@bean注解
https://blog.csdn.net/qq_44543508/article/details/103718958
https://www.hangge.com/blog/cache/detail_2506.html

Shiro

shiro基础版-后端
https://gitee.com/seventeenw/springboot-shiro

谈谈shiro的工作流程

启动项目的时候,首先会 配置SecurityManager的生命周期处理器,然后注册自己写的授权和认证,配置shiro拦截器,并开启注解功能
登录的时候,先判断该用户是否生成过token,来进行保存或者更新token。
发送请求的时候,首先会拦截除option外所有的请求,进行token的非空验证,如果token是空的,则返回错误信息,如果不是空的,则验证token的有效性,如果无效,则返回错误信息,有效的话进行权限验证。先给用户添加角色和权限(授权)再进行验证,无权限返回对应异常,有权限进入对应接口

MybatisPlus

xml 头

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.sq.bootshiro.modules.dao.PermissionRepository">
    
</mapper>


跨域

解决跨域

package com.sq.bootshiro.config;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

/**
 * 实现基本的跨域请求
 *
 */
@Configuration
public class CorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
        final CorsConfiguration corsConfiguration = new CorsConfiguration();
        /*是否允许请求带有验证信息*/
        corsConfiguration.setAllowCredentials(true);
        /*允许访问的客户端域名*/
        corsConfiguration.addAllowedOriginPattern("*");
        /*允许服务端访问的客户端请求头*/
        corsConfiguration.addAllowedHeader("*");
        /*允许访问的方法名,GET POST等*/
        corsConfiguration.addAllowedMethod("*");
        urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
        return new CorsFilter(urlBasedCorsConfigurationSource);
    }
}

springBoot升级2.4.0所出现的问题:When allowCredentials is true, allowedOrigins cannot contain the specia

解决办法:跨域配置报错,将.allowedOrigins替换成.allowedOriginPatterns即可。

Docker

默认开启虚拟机启动/关闭

#开启
docker update redis --restart=always
#关闭
docker update redis --restart=no

Swagger

结合springboot使用

https://blog.csdn.net/qq_42829628/article/details/117163384

Log4j2

结合springboot使用

https://www.cnblogs.com/cndarren/p/12021596.html

MAVEN

DepencyManagement和dependencies

DepencyManagement 子项目使用依赖项的统一版本

区别

dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)

dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

MyBatis-Plus

MyBatis-Plus中的LambdaQueryWrapper是如何实现传入实体方法引用来获取方法属性名的?

https://www.oschina.net/question/162091_2305348?sort=default

其他问题

时间少了8小时

&serverTimezone=Asia/Shanghai
eg.
url: jdbc:mysql://localhost:3306/renren_fast?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值