【学习笔记】

码云蘑菇博客开源项目学习笔记

项目源码部分

记录学习过程中遇到的不懂的地方,答案主要来自于百度。

mogu_admin

annotion

  1. application.yml和bootstrap.yml的不同?

    bootstrap.yml 和 application.yml 都可以用来配置参数。

    bootstrap.yml 用来程序引导时执行,应用于更加早期配置信息读取。可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。一旦bootStrap.yml 被加载,则内容不会被覆盖。

    application.yml 可以用来定义应用级别的, 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。引用

  2. @interface?

    使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节。在定义注解时,不能继承其他的注解或接口。@interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum)。可以通过default来声明参数的默认值。

    在编写接口的时候,通常会先对参数进行一次校验,这样业务逻辑代码就略显冗杂,如果可以把校验参数的代码进行统一管理,在方法或者属性上直接添加注解就可以实现参数的校验,就可以提升代码编写的效率。引用

    注解@Retention可以用来修饰注解,是注解的注解,称为元注解。

    常见元注解详情 元注解:
    1.@Target,
    2.@Retention,
    3.@Documented,
    4.@Inherited

  3. @Slf4j?

    很简单的就是为了能够少写两行代码,不用每次都在类的最前边写上:
    private static final Logger logger = LoggerFactory.getLogger(this.XXX.class);
    我们只需要在类前面添加注解@Slf4j,即可使用log日志的功能了
    使用十分方便,和以前的logger一样用,有info,debug,error等等 引用

  4. @Component?

    @Component是Spring框架中的一个通用注解,用于标记一个类为组件,让Spring能够在应用程序启动时自动扫描并加载这些组件。引用

    @Component与@Bean的区别与联系 引用

  5. @Aspect?

    AOP思想:

    AOP(Aspect Oriented Programming)是一种面向切面的编程思想。面向切面编程是将程序抽象成各个切面,即解剖对象的内部,将那些影响了多个类的公共行为抽取到一个可重用模块里,减少系统的重复代码,降低模块间的耦合度,增强代码的可操作性和可维护性。AOP把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处都基本相似。比如权限认证、日志、事务处理、增强处理

    @Aspect的使用以及基本概念:
    1.切面类 @Aspect: 定义切面类,加上@Aspect、@Component注解

    2.切点 @Pointcut

    3.Advice,在切入点上执行的增强处理,主要有五个注解:

       @Before  在切点方法之前执行
       @After  在切点方法之后执行
       @AfterReturning 切点方法返回后执行
       @AfterThrowing 切点方法抛异常执行
       @Around 属于环绕增强,能控制切点执行前,执行后
    

    4.JoinPoint :方法中的参数JoinPoint为连接点对象,它可以获取当前切入的方法的参数、代理类等信息,因此可以记录一些信息,验证一些信息等;

    5.使用&&、||、!、三种运算符来组合切点表达式,表示与或非的关系;

    6.@annotation(annotationType) 匹配指定注解为切入点的方法;引用

  6. ServletRequestAttributes?
    用于获取request和session请求信息的。引用

  7. redisUtil.get?
    redis基本增删改查操作。引用
    分隔符之类的变量也可以变量存取在数据库中,便于改动后修改。

  8. IService?
    IService接口是对 CRUD 的进一步封装,对数据库进行操作的接口类。引用1引用2

  9. QueryWrapper?
    queryWrapper是mybatis plus中实现查询的对象封装操作类,可以封装sql对象,包括where条件,order by排序,select哪些字段等等,引用

     //构建一个查询的wrapper
     QueryWrapper<User> wrapper = new QueryWrapper<User>();
     //年龄20-30之间的
     wrapper.between("age",20,30);
     //未删除
     wrapper.eq("del_flag",0);
     //创建时间降序
     wrapper.orderByDesc("create_time");
    
     List<User> list = userMapper.selectList(wrapper);
    
  10. MethodSignature?
    MethodSignature 属于 Spring AOP 框架,位于 org.aspectj.lang.reflect 包下。主要用于 Spring AOP 中,用于在切面中获取被代理方法的签名信息,方便切面进行条件匹配、日志记录等操作。引用

    方法名 功能
    point.getSignature() 封装了被注解所修饰的方法所在类的信息,得到的是方法签名(方法名和参数类型)
    point.getTarget() 封装了被注解所修饰的方法的信息
    point.getArgs() 封装了被注解所修饰的方法的参数信息
    point.getSignature().getName() 被修饰的方法的方法名
    point.getSignature().getMethod() 封装了被修饰的方法的信息 引用

  11. method.getAnnotation()?
    java.lang.reflect.Method.getAnnotation(Class annotationClass)方法如果存在这样的注释,则返回指定类型的元素的注释,否则为null。
    就是获取该类或方法的注解信息。 引用

  12. method.getDeclaringClass()?
    此方法返回声明方法的Class 对象。引用

  13. point.proceed()?
    #环绕通知=前置+目标方法执行+后置通知,proceed方法就是用于启动目标方法执行的。 引用

config

  1. @Configuration?
    @Configuration详解,功能:将想要的组件添加到容器中
    现在的Spring Boot已经不需要向以前一样了,有一个注解@Configuration(翻译:配置)可以供使用
    1.创建一个类。
    2.使用注解@Configuration,告诉Spring Boot这是一个配置类。
    这个时候在类里边不能写bean标签了需要使用@bean注解,想要构建出user和pet对象需要自己将它创造出来。
    @bean:给容器中添加组件,以方法名作为组件的id。返回类型为组件类型,返回的值,就是组件在容器中的实例 引用

  2. @Value?

    @Value()注解可以用来将外部的值动态注入到Bean中,在@Value注解中,可以使用 ${} 和 #{} 区别

     @Value("${}"): 可以获取对应助兴文件中定义的属性值
    
     @Value("#{}"):表示SpEl表达式通常来获取bean的属性,或者调用bean的某个方法
    

引用

  1. @Primary
    其作用与功能,当有多个相同类型的bean时,使用@Primary来赋予bean更高的优先级。引用

  2. DruidDataSource()?
    Druid是阿里巴巴开源平台上的一个数据源连接池的实现,结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控

    Druid可以很好的监控DB连接池和SQL执行情况,天生就是针对监控而生的DB连接池。

    DruidDataSource 是阿里写出来的一个数据源, 它不仅可以获取数据库连接,还把这些数据库连接管理了起来,也就是所谓的数据库连接池。这样的话,当通过该数据源获取数据库连接的时候,如果数据库连接池里有可以使用的连接,那么就直接返回该连接,就省的每次获取数据库连接都要创建了。

  3. ServletRegistrationBean()?
    在 Filter 的注册中,我们知道有一种方式是定义一个 Spring 的 Bean FilterRegistrationBean来包装我们的自定义 Filter,从而让 Spring 容器来管理我们的过滤器;同样的在 Servlet 中,也有类似的包装 bean: ServletRegistrationBean

  4. Arrays.asList()?
    该方法是将数组转化成List集合的方法。

    List list = Arrays.asList(“a”,“b”,“c”);

    注意:

    (1)该方法适用于对象型数据的数组(String、Integer…)

    (2)该方法不使用于基本数据类型的数组(byte,short,int,long,float,double,boolean)

    (3)该方法将数组与List列表链接起来:当更新其一个时,另一个自动更新

    (4)不支持add()、remove()、clear()等方法
    引用

  5. druid webStatFilter()配置?
    WebStatFilter用于采集web-jdbc关联监控的数据。引用

  6. druid statViewServlet()配置?
    Druid内置提供了一个StatViewServlet用于展示Druid的统计信息。

    这个StatViewServlet的用途包括:

    提供监控信息展示的html页面
    提供监控信息的JSON API

  7. Swagger下的public Docket createRestApi()?
    通过createRestApi()函数创建Docket的Bean之后,apiInfo()用来创建该Api的基本信息(这些基本信息会展现在文档页面中)。select()函数返回一个ApiSelectorBuilder实例用来控制哪些接口暴露给Swagger来展现,本例采用指定扫描的包路径来定义,Swagger会扫描该包下所有Controller定义的API,并产生文档内容(除了被@ApiIgnore指定的请求)。
    引用

    Swagger的详细步骤与解读 引用

  8. Nginx — 正则语法
    引用

global

  1. 基类通过final static 关键字声明字符串常量,实际调用的类继承基类。保证系统的可拓展性和可维护性。

restapi

  1. @RestController?
    Controller, RestController的共同点

    都是用来表示Spring某个类的是否可以接收HTTP请求。

    Controller, RestController的不同点

    @Controller:标识一个Spring类是Spring MVC controller处理器。@Controller类中的方法可以直接通过返回String跳转到jsp、ftl、html等模版页面。在方法上加@ResponseBody注解,也可以返回实体对象。引用

  2. @Validated?
    @Validated(addGroup.class)就是给参数进行了分组校验

    addGroup.class:是一个接口类,简单的来说:就是用来给参数做标记的(里面不需要写任何代码)

  3. BindingResult?
    @Valid和BindingResult配套使用,@Valid用在参数前,BindingResult作为校验结果绑定返回,如果@Valid不起作用,换@Validated试试。

    bindingResult.hasErrors()判断是否校验通过,校验未通过,bindingResult.getFieldError().getDefaultMessage()获取在TestEntity的属性设置的自定义message,如果没有设置,则返回默认值"javax.validation.constraints.XXX.message"。
    引用
    我的理解:BindingResult就是通过@Validated的效验结果信息

  4. Serializable接口?
    任何类型只要实现了Serializable接口,就可以被保存到文件中,或者作为数据流通过网络发送到别的地方。也可以用管道来传输到系统的其他程序中。 引用

  5. @Constraint?
    @Constraint注解是Java Bean Validation框架中的一个注解,用于自定义约束注解,即自定义校验规则。

    通过在自定义注解上添加@Constraint注解,可以将该注解标记为一个自定义约束注解。同时,需要指定一个实现了ConstraintValidator接口的验证器类,用于验证该注解所标记的字段或参数是否符合自定义的校验规则。

    @Constraint注解有以下属性:

    validatedBy:用于指定实现了ConstraintValidator接口的验证器类。该属性的值是一个Class对象数组,可以指定多个验证器类。

    message:用于指定当校验失败时,所返回的错误信息。可以使用占位符{},在校验器中使用具体的参数替换。

    groups:用于指定分组,即根据不同的分组应用不同的校验规则。

    payload:用于指定元数据,即可以通过该属性传递一些额外的验证信息。
    引用

  6. @DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)
    @JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”)

    Json传参格式化:
    添加@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”, timezone = “GMT+8”)
    url传参格式化:
    添加@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)
    引用

  7. @RequestBody?
    1、@RequestBody 主要用来接收前端传递给后端的 json 格式的数据的(请求体中的数据的),有一个属性 required,表示参数是否必须要传,默认为 true.

    2、GET 方式无请求体,所以 @RequestBody 接收数据时,前端必须是 POST 方式进行提交,然后给页面的数据默认也是 json

    3、同一个方法中,@RequestBody 与 @RequestParam() 可以同时使用,前者最多只能有一个,后者可以有多个,

    4、@RequestBody 接收的是请求体里面的数据,@RequestParam 接收的是 key-value 里面的参数。
    引用

  8. Collection?
    在这里插入图片描述
    引用

  9. @RefreshScope?
    @RefreshScope注解是Spring Cloud中的一个注解,用来实现Bean中属性的动态刷新。在微服务中不重新启动也能更新Bean中属性。引用

security

  1. AuthenticationEntryPoint?
    AuthenticationEntryPoint : spring security 中的一个接口,用于处理认证失败或者未认证的请求。当用户尝试访问受保护的资源而未经过身份验证,,或者身份验证失败的时候,调用。
    可能用于跳转到登录页面或其他处理操作。引用

  2. @Qualifier?
    四种用法:
    第 1 种:从多个候选 bean 中选择一个
    第 2 种:标注在类上,对 bean 进行分组
    第 3 种:标注在方法上,对 bean 进行分组
    第 4 种:自定义@Qualifier
    引用

  3. Jackson2JsonMessageConverter()?
    依赖:

    		<dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
            </dependency>
    
    

其作用是将对象序列化为 JSON 格式。
引用

  • 27
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值