依赖查找的今世前生 单一类型依赖查找 JNDI - javax.naming.Context#lookup JavaBeans - BeanContext 集合类型依赖查找 java.beans.beancontext.BeanContext 层次依赖查找 java.beans.beancontext.BeanContext 单一类型查找 单一类型依赖查找接口 - BeanFactory 根据Bean名称查找 getBean(String) Spring 2.5默认覆盖参数: getBean(String, Obj…

4月 30, 2021 0条评论 393点热度 0人点赞 阅读全文

依赖注入的模式和类型 手动模式 - 配置或者变成的方式,提前安排注入规则 XML资源配置元数据 Java注解配置元信息 API配置元信息 自动模式 - 实现提供依赖自动关联的防护四,按照内建的注入规则 Autowiring(自动绑定) 依赖注入类型 依赖注入类型 配置元数据距离 Setter方法 <property name="user" ref="iserBean" /> 构造器 <constructor name="user" ref="useBean" /> 字段 @Autowire …

4月 29, 2021 0条评论 421点热度 0人点赞 阅读全文

DispatcherServlet 类图结构 DispatcherServlet的工作大致分为两个部分 初始化Servlet, 由initServletBean()启动, 通过initWebApplicationContext()方法最终调用DispatcherServlet的initStrategies()方法, 在这个方法中, 主要完成了对容器中的其他组件的初始化,例如handlerMapping,ViewResolver等。 是对Http请求的处理, 作为一个Sevlet, 最终会调用到doGet和doPos…

4月 27, 2021 0条评论 507点热度 0人点赞 阅读全文

引入动机 为什么Spring不适用Java标准资源管理,而选择重新发明轮子 Java标准资源管理很强大,然而扩展复杂,资源存储方式并不统一 Spring要自立门户 Spring 抄, 超, 潮 Java标准资源管理 Java标准资源定位 职责 说明 面向资源 文件系统,artifactory(jar, war, ear文件)以及远程资源 API整合 java.lang.ClassLoader#getResource, java.io.File 或 java.net.URL 资源定位 java.net.URL或jav…

4月 26, 2021 0条评论 406点热度 0人点赞 阅读全文

Java泛型基础 泛型类型 泛型类型是在类型上参数化的泛型类或接口 泛型使用场景 编译时强类型检查 避免类型墙砖 实现通用算法 泛型类型擦写 泛型被引入到Java语言中,以便在编译时提供更严格的类型检查并支持泛型编程。类型擦除确保不会为参数化类型创建新类。因此泛型不会产生运行时开销。为了实现泛型,编译器将类型擦除应用于: 将泛型类型中的所有类型参数替换为其边界,如果类型参数是无界的 ,则将其替换为Object, 因此,生成的字节码只包含普通类,接口和方法。 必要是插入类型转换以保持类型安全 生成桥接方法以保留扩展泛…

4月 25, 2021 0条评论 457点热度 0人点赞 阅读全文

Spring 数据绑定使用场景 Spring BeanDefinition到Bean实例创建 Spring 数据绑定(DataBinder) Spring Web参数绑定(WebDataBinder) Spring 数据绑定组件 标准组件 org.springframework.validation.DataBinder Web组件 org.springframework.web.bind.WebDataBinder org.springframework.web.bind.ServletRequestDataBi…

4月 24, 2021 0条评论 408点热度 0人点赞 阅读全文

Spring数据转换 使用场景 场景 基于JavaBeans接口的类型转换实现 Spring3.0+通用类型转换实现 数据绑定 YES YES BeanWrapper YES YES Bean属性类型转换 YES YES 外部化属性类型转换 NO YES 基于JavaBeans接口的类型转换 核心职责 将String类型的内容转换为目标类型的对象 扩展原理 Spring框架将文本内容传递到PropertyEditor实现的setAsText(String)方法 PropertyEditor#setAsText(St…

4月 23, 2021 0条评论 425点热度 0人点赞 阅读全文

Java事件/监听器编程模型 设计模式 - 观察者模式扩展 可观者对象 = Observable 观察者 = Observer 标准化接口 事件对象 - EventObject 事件监听器 - EventListener 面向接口的事件、监听器设计模式 事件/监听器场景距离 Java技术规范 事件接口 监听接口 JavaBeans java.beans.PropertyChangeEvent java.beans.PropertyChangeListener Java AWT java.awt.event.Mous…

4月 22, 2021 0条评论 458点热度 0人点赞 阅读全文

Java正则表达式使用的引擎实现是NFA自动机, 这种正则表达式引擎在进行字符匹配时会发生回溯(backtracking)。而一旦发生回溯, 那其消耗的时间就会变得很长, 有可能是几分钟,也有可能是几个小时, 时间取决于回溯的次数和复杂度. 正则表达式引擎 正则表达式引擎有两种实现方式: DFA自动机(Deterministic Final Automata 确定型有穷自动机)和NFA自动机(Non Deterministic Finite Automation 不确定性有穷自动机) DFA自动机 时间复杂度是线性…

4月 21, 2021 0条评论 413点热度 0人点赞 阅读全文

在Java中的多线程是一个抢占式的机制, 而不是分时机制。抢占式机制是有多个线程处于可运行状态, 但是只有一个线程处于运行状态. 共同点 他们都是在多线程环境下, 可以指定线程阻塞时间的操作, 并返回. wait()和sleep()都可以通过线程实例的interupt方法打断暂停的状态, 从而使线程能够立即抛出InteruptedException的异常. NOTE: 线程的interupt的方法, 并不会跑出InteruptedException的异常, 该异常是由线程内部跑出的。如果该线程正在执行正常的业务逻辑…

4月 20, 2021 0条评论 403点热度 0人点赞 阅读全文

NOTE: 在调用obj.wait()的状态的时候, 必须要获取obj的锁, 因为在进行obj.notify()的方法会释放对应的obj的状态, 并进入waiting状态 阻塞与等待的区别 阻塞: 当一个线程尝试获取对象锁(非JUC中的锁, 即synchronized), 如果对象锁已经被其他的线程锁持有, 则当前线程进入阻塞状态.(这种状态会由JVM来进行唤醒, 不需要我们通过程序的方式进行唤醒。而且当前的阻塞状态不会响应中断的请求.) 等待: 当一个线程等待另外一个线程通知调度器的一个条件时, 该线程进入等待状…

4月 19, 2021 0条评论 380点热度 0人点赞 阅读全文