9.7k 9 分钟

# 现实问题分析 本系统开发的目的是为了减轻图书管理工作的负担, 将那些原来需要用手工完成的事情让计算机来完成. 不但使得图书管理工作的效率大大提高, 同时也大大地降低了出错概率. 如上图所示是书籍管理系统整体功能结构图, 每个部分也就是一个模块. 系统由上图的各种模块组合而成, 每个模块都完成相应的功能, 他们协调一致进行工作. # 技术选型 本系统后端采用技术如下 : SpringBoot 2.7.7 SpringBoot 框架采用约定大约配置的方式,大大简化了 Spring 应用的初始搭建以及开发过程. MyBatisPlus 3.5.2 MyBatisPlus 是基于...
11k 10 分钟

# AOP # JDK 动态代理原理 JDK 内部实现是通过反射,通过获取到目标对象类加载器,目标对象实现接口,和 InvocationHandler 来实现增强. JDK 动态生成类手动实现 : 12345678910111213141516171819202122232425262728293031323334353637383940414243444546//继承Proxy类, Proxy类中有InvocationHandler实例, 所以子类中不需要创建了//实现了目标对象接口, 并生成方法, 但是方法内部并没有任何和目标类方法中近似的代码,...
19k 17 分钟

# 结构型模式 结构型模式描述如何将类或对象按某种布局组成更大的机构。它分为类结构型模式和对象结构性模式,前者采用继承机制来组织接口和类,后者采用组合或聚合来组合对象 由于组合关系或聚合关系比继承关系耦合度低,满足 “合成服用原则”, 所以对象结构性模式壁垒结构型模式具有更大的灵活性 结构型模式分为以下 7 种 : 代理模式 适配器模式 装饰者模式 桥接模式 外观模式 组合模式 享元模式 # 代理模式 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这是,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介 Java...
2.9k 3 分钟

# Scope # Scope 类型有哪些 Singleton Prototype request session applicaion 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859@Scope("application")@Componentpublic class BeanForApplication { public static final Logger...
3.7k 3 分钟

# Aware 接口 # Aware 接口作用 Aware 接口用于注入一些与容器相关信息 BeannameAware 注入 bean 的名字 BeanFactoryAware 注入 BeanFactory 容器 ApplicationContextAware 注入 ApplicationContext 容器 EmbeddedValueResolverAware 处理 ${} 为什么有了 @Autowired 等注解还需要 Aware 接口呢 @Autowired 的解析需要用到 Bean 后处理器,属于扩展功能 而 Aware...
1.2k 1 分钟

# 初始化和销毁 # 初始化和销毁的方式 注解 实现的 Aware 接口或 InitializingBean 或 DisposableBean 接口 @Bean(initMethod/destroyMethod) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354public class Bean1 implements InitializingBean { public static final Logger log =...
5.5k 5 分钟

# BeanFactory 后处理器 # 实现 @ComponentScan 组件扫描 1234567891011121314151617181920212223242526272829303132333435363738394041424344public class ComponentScanPostProcessor implements BeanFactoryPostProcessor { @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory...
3.6k 3 分钟

# 常见 Bean 后处理器 # 常见 BeanPostProcessor 使用 1234567891011121314151617181920212223242526272829303132public class A04Application { public static void main(String[] args) { //GenericApplicationContext是一个干净的容器, 同时有比DefaultListableApplicationContext方便 //...
1.9k 2 分钟

# Bean 的生命周期 12345678910111213141516171819202122232425262728293031323334353637383940414243public class MyBeanPostProcessor implements InstantiationAwareBeanPostProcessor, DestructionAwareBeanPostProcessor { public static final Logger log = LoggerFactory.getLogger(MyBeanPostProcessor.class);...
6k 5 分钟

# 容器实现 # BeanFactory 实现的特点 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125public...