新建examples模块

基于Spring源码工程创建练习模块,集成lombok,为后续Spring核心API的学习做铺垫。

创建子模块

项目右键:New | Module,创建一个gradle子模块examples,以它为父路径,再创建练习的模块spring-00-demo-without-spring,注意,模块以spring-开头,build.gradle主配置中会对这类模块进行统一的设置,为确保模块使用的环境一致,我们遵循这个约定。

模块结构:

settings.gradle中包含进来的模块:

include 'examples'
include 'examples:spring-00-demo-without-spring'
引入lombok

在工程build.gradle中维护新加的依赖版本,这里引入lombok来简化开发

configure(allprojects) { project ->
    ...
    dependencyManagement {
        ...
        dependencies {
            dependency "org.projectlombok:lombok:1.18.24"
            ...
        }
    }
}

在公共依赖中引入lombok组件编译需要的依赖

configure([rootProject] + javaProjects) { project ->
    ...

    dependencies {
        compile 'org.slf4j:slf4j-api'
        compileOnly 'org.projectlombok:lombok'
        testCompileOnly 'org.projectlombok:lombok'
        annotationProcessor 'org.projectlombok:lombok'
        testAnnotationProcessor 'org.projectlombok:lombok'
        ...
    }
}

我们希望使用lombok提供的日志注解来简化日志api的使用,引入进来会有副作用,编译源码时会提示注解处理器报出来警告信息:

警告: 没有处理程序要使用以下任何注释: org.springframework.core.annotation.AliasFor,javax.annotation.meta.TypeQualifierDefault,org.springframework.lang.NonNullFields,java.lang.FunctionalInterface,org.springframework.lang.NonNullApi,javax.annotation.meta.TypeQualifierNickname,org.springframework.lang.Nullable,javax.annotation.Nonnull
错误: 发现警告, 但指定了 -Werror
1 个错误
1 个警告

按照提示来解决,在CompilerConventionsPlugin类中注释掉,

//                , "-Werror"

并在spring-beans.gradle中注释掉:

compileGroovy {
    ...
//    options.compilerArgs += "-Werror"
}
引入现有的Spring模块

因为我们的练习模块集成在Spring源码工程中,引入Spring模块采用如下的形式:

spring-00-demo-without-spring/build.gradle

dependencies {
    compile(project(":spring-beans"))
}
日志配置文件

从Spring模块中拷贝一份单元测试环境使用的日志配置文件,放到我们练习模块相应的test/resources目录下

修改日志级别,确保所有info级别的日志能正常输出,方便跟踪执行步骤。另外设置为不同的日志级别采用不同颜色的高亮显示:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%highlight{%d{HH:mm:ss.SSS} [%t] %-5level %logger{1.} - %msg%n}"
                           disableAnsi="false" noConsoleNoAnsi="false" />
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="com.xiaoma.spring" level="info" />
        <Root level="info">
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>

执行一个测试日志输出的单元测试看看效果:

说明
这里着重介绍了lombok的引入,用其提供的api极大的方便我们对POJO中相关选项的生成,以及简化日志的使用。我们将通过测试驱动的方式,采用用例覆盖并调试涉及的功能代码的调用,同时也通过日志输出能更好的观察程序的执行路径、涉及的组件是如何调用的。 注意,这里不推荐使用 System.out.println("输出日志"); 这种形式,因为不知道是哪个线程对哪个类进行的调用,不方便我们观察执行流程;另外,我们还可以对日志开启按照不同的级别高亮区分显示的功能。
编译模块

每次修改了功能代码或测试代码后,直接运行单元测试即可,编译时会自动对修改的模块代码执行基于构建缓存的更新(如果修改后的状态之前有构建缓存,则直接使用缓存构建),而其他模块的代码则保持最新的状态。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java小卷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值