spring
wmtmw
之前的博客:https://wmtmw.github.io/
展开
-
Spring AOP概述、常见术语及基于XML和注解的AOP具体实现
概念 面向切面编程,就是在不改变原有程序的基础上为代码段增加新的功能,对其进行增强处理,设计思想来源于代理模式,代理模式实现可参考JDK动态代理 常见术语 切面 存放切面实现的普通java类,需要在配置中通过标记指定,该类要被AOP容器识别为切面。 连接点 程序执行中某个具体的执行点,比如某方法调用的时候,或者处理异常的时候。在Spring AOP中,一个连接点总是表示一个方法的执行。 切入点 切面与程序流程的交叉点,即那些需要处理的连接点。当某个连接点满足预先指定的条件时,AOP框架能够定位到这个连接点原创 2020-09-12 11:48:40 · 186 阅读 · 0 评论 -
Bean的装配方式
Spring容器负责创建应用程序中的Bean,并通过依赖注入协调这些对象之间的关系。创建应用对象之间协作关系的行为通常成为装配。 基于XML的Bean装配 Spring提供了两种基于XML的装配方式:属性setter方法注入和构造方法注入。在Spring实例化Bean过程中,Spring首先会调用Bean的默认构造方法来实例化Bean对象,然后通过反射的方式调用setter方法来注入属性值。属性setter方法注入要求Bean必须满足两点: Bean类必须提供一个默认的构造方法。 Bean类必须为需要注入原创 2020-09-11 22:38:21 · 462 阅读 · 0 评论 -
Bean的配置
XML(常用) Spring中,XML配置文件的根元素是<beans>,其下包含<bean>子元素,每个<bean>子元素定义一个Bean,并描述该Bean如何被装配到Spring容器中。 <bean>元素常用属性 id:容器中Bean的唯一标识符,Spring容器对Bean的配置、管理通过该属性完成,装配Bean时根据id值获取对象。 name:Spring容器可以通过该属性对容器中的Bean进行配置和管理,name属性可以为Bean指定多个名称,每个原创 2020-09-11 21:50:38 · 814 阅读 · 0 评论 -
Spring IoC容器与BeanFactory、ApplicationContext接口
Spring框架的主要功能是通过其IoC容器来实现的,它可以容纳我们所开发的各种Bean,并且我们可以从中获取各种发布在Spring IoC容器里的Bean。 Spring IoC容器的设计主要基于BeanFactory和ApplicationContext两个接口。 BeanFactory Spring IoC设计的核心是Bean容器,BeanFactory是Spring IoC容器的核心接口,采用了java经典的工厂模式,由org.springframework.beans.factory.BeanFa原创 2020-09-11 21:20:51 · 250 阅读 · 0 评论 -
Bean的作用域及singleton和prototype的使用场景
容器最重要的任务是创建并管理JavaBean的生命周期,创建Bean之后,需要了解Bean在容器中是如何在不同作用域下工作的。 Bean的作用域就是指Bean实例的生存空间或有效范围。 singleton:在每个Spring IoC容器中,一个bean定义对应一个对象实例。 Spring容器的默认作用域,当一个bean的作用域为singleton时,Spring IoC容器中只会存在一个共享的Bean实例,并且所有对Bean的请求,只要id与该Bean定义相匹配,就只会返回Bean的同一个实例。换言之,原创 2020-09-11 20:20:59 · 2637 阅读 · 0 评论 -
JDK动态代理
采用JDK动态代理的目标类需要实现接口 目标类和代理类的接口 interface Company{ void findWorker(); } 目标类 class HR implements Company{ @Override public void findWorker(){ System.out.println("招人"); } } 定义动态代理类需要实现InvocationHandler接口 class DynamicProxy implements InvocationHandler原创 2020-06-16 10:18:56 · 120 阅读 · 0 评论 -
Spring事务隔离级别和传播机制
五种隔离级别 在TransactionDefinition接口中定义 ISOLATION_DEFAULT 使用后端数据库默认的隔离级别 ISOLATION_READ_UNCOMMITTED 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读,幻读,或不可重复读。 ISOLATION_READ_COMMITTED 读取已提交的数据,可以解决脏读问题 ISOLATION_REPEATABLE_READ 对同一字段的多次读取结果都是一致的,除非数据是被事务自身修改,可以解决脏读和不可重复读问题 ISOL原创 2020-06-16 09:53:40 · 163 阅读 · 0 评论 -
Spring整合kafka
引入依赖 <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> 配置kafka application.properties #kafkaProperties spring.kafka.bootstrap-servers=localhost:9092 spring.k原创 2020-05-23 00:02:04 · 191 阅读 · 0 评论 -
Spring整合redis
引入依赖 pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 配置Redis 配置数据库参数 application.properties #RedisProperties spring.redis.database原创 2020-05-22 16:02:03 · 203 阅读 · 1 评论 -
创建对象的两种方式:new和工厂模式
使用new创建对象,是主动获取资源的方式,应用与资源之间是直接依赖的。 而采用工厂模式获取对象时,是应用向工厂要对象,工厂从容器中获取对象返回给应用,是被动的,从而降低了应用和资源之间的依赖关系。 使用new创建对象是主动创建;把创建对象的主动权交给工厂,是被动创建,这种主动权的变化就叫控制反转。 参考资料 https://www.bilibili.com/video/BV1Sb411s7vP...原创 2020-05-07 23:09:12 · 2065 阅读 · 2 评论 -
使用工厂模式解耦
代码结构 bean.properties accountService = com.itheima.service.impl.AccountServiceImpl accountDao = com.itheima.dao.impl.AccountDaoImpl BeanFactory.java 这里AccountServiceImpl对象只会创建一次,在静态代码块加载的时候创建对象,并保存在...原创 2020-05-07 22:51:40 · 127 阅读 · 0 评论 -
程序的耦合与解耦
public class JdbcDemo1 { public static void main(String[] args) throws SQLException, ClassNotFoundException { // 1.注册驱动 DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());...原创 2020-05-07 16:19:16 · 267 阅读 · 0 评论