# geekbang-mercyblitz-java-lesson-in-action **Repository Path**: liveForExperience/geekbang-mercyblitz-java-lesson-in-action ## Basic Information - **Project Name**: geekbang-mercyblitz-java-lesson-in-action - **Description**: 极客时间-小马哥java实战训练营-代码仓库 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2021-03-02 - **Last Updated**: 2021-10-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # geekbang-mercyblitz-java-lesson-in-action #### 介绍 极客时间-小马哥java实战训练营-代码仓库 #### 第一周 - Servlet - /hello/world(GET):forward首页 - /register(GET):forward登录页 - /register(POST): 1. 表单提交 2. 注册 3. 通过用户名密码查询 4. forward登录页展示user信息 - JDBC - save 硬编码(todo 仿造executeQuery) - 通过JNDI方式获取数据源 #### 第二周 - 在监听器中创建并设置全局的组件上下文,通过JNDI方式获取组件(例如获取数据库连接) - 实现简单的依赖注入功能: 1. 注入:Resource 2. 初始:PostConstruct 3. 销毁:PreDestroy(通过调用tomcat的SHUTDOWN命令验证) - 基于ConstraintValidator实现用户实体类的校验器 - 实现除Controller外的所有组件的依赖注入 #### 第三周 - 整合jolokia,放在listener上注册User - 通过spi套娃获取ConfigProviderResolver -> Config -> ConfigSource - 实现PropertiesConfigSource,默认读取根路径下的config.properties文件,并实现application.name的参数值获取,将值渲染在注册成功后的跳转页面上 - 创建自定义注解`@MyValue`,在ComponentContext初始化的时候,通过Env,从config.properties中读取配置,完成标记有该注解的字段的注入操作 #### 第四周 - 重构ConfigProviderResolver -> ConfigBuilder-> Config -> Config - 重构工程目录,拆分出`my-configuration`和`my-dependency-injection` - 实现Config对象被my-web-mvc使用 - 通过ServletRequestListener实现threadlocal获取配置的方式 #### 第五周 - 新增my-rest-client模块,并实现POST请求 - 新增my-reactice-messaging模块 #### 第六周 - 新增my-cache模块,并实现redis和lettue两种Cache实现 - 新增用于key和value序列化的API #### 第七周 - 新增my-cache模块的jmx相关实现 - 新增my-rest—client的microprofile实现 - 实现user-web上基于码云OAuth的授权登录 #### 第八周 - 新增一个接口HttpSecurityConfigurer组合WebSecurityAdapter的configure方法,由用户实现不同的HttpSecurity的配置 - 保证应用中WebSecurityAdapter的实现类唯一,并由该实现类与HttpSecurityConfigurer的实现类集合进行组合,通过configure方法合并所有HttpSecurityConfigurer实现类的configure实现 #### 第九周 #### 第十周 - 补充@EnableMybatis注解的属性 #### 第十一周 - 参照dubbo的一致性哈希LoadBalance实现进行仿写 #### 第十二周 - 模仿mybatis-spring-boot-starter的自动装配实现,仿写基于注解的mybatis-starter #### 第十三周 - 基于文件系统为 Spring Cloud 提供 PropertySourceLocator 实现 - 配置文件命名规则 (META-INF/config/default.properties 或者 META-INF/config/default.yaml) #### 第十四周 - 利用 Redis 实现 Spring Cloud Bus 中的 BusBridge,避免强 依赖于 Spring Cloud Stream。