spring(3)

Spring框架中都用到了哪些设计模式?

1.工厂模式:BeanFactory就是简单工厂模式的体现,用来创建对象的实例

2.单例模式:Bean默认为单例模式

3.代理模式:SpringAOP功能用到了JDK的动态代理和CCGLIB字节码生成技术

4.模板方法:用来解决代码重复的问题

5.观察者模式:定义对象建一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会被通知强制更新

 

注解的原理

注解本质上是一个继承了Annotation的特殊接口,其具体实现类是java运行是生成的动态代理类,当通过反射获取注解时,返回的java运行时生成的动态代理对象,通过代理对象调用自定义注解的方法,最终会调用AnnotationInvocationHandle的invoke方法。该方法会从memberValues这个map中索引出对应的值。而memberValues的来源是java常量池。

 

SpingJDBC与传统的JDBC有什么区别?

Spring的JDBC是在原生态的JDBC上面进行的一次简单的封装,提供了一些接口,节省代码,不管连接、不管事务、不管异常、不管关闭。只需要实现Spring提供的回调类。传统的JDBC执行过程如下

1.创建连接

2.创建sql语句

3.执行sql语句

4.返回结果

5.关闭资源

在SpringJDBC中只需要实现2、4就可以了,其他都由Spring完成,,而2、4都是通过实现指定的接口,然后将实现类传递给Spring句完成了

 

 

什么是面向切面编程?

针对业务处理过程中的切面进行提取,他所面对的是处理过程中的某个步骤或者阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果

 

为了降低java的开发的复杂性,Spring采取了一下四种关键策略?

1.通过POJO的轻量级和最小侵入性编程

2.通过依赖注入和面向接口实现松耦合

3.给予切面个管理进行声明式编程

4.通过切面和模板减少样板式代码

 

Spring切面亏应用五种类型的通知?

1.Before

2.After

3.After-returning

4.After-throwing

5.Around

 

 

Spring提供的四种各具特色的AOP支持

1.给予代理的经典的AOP

2.@AspectJ注解驱动切面

3.纯POJO切面

4.注入式AspectJ切面(适合Spring的各个版本)

 

 

声明式事务管理的事务属性有一下五种?

1.传播行为:传播行为定义了客户端与被调用方法之间的事务边界

2.隔离级别:隔离级别定义了一个事务可能受其他并发事务影响的程度

3.只读:表明事务是否式只读的

4.事务超时:指定事务运行的最长时间,超时就会回滚

5.回滚规则:定义了哪些异常会导致事务回滚哪些不会

 

脏读、不可重复读和幻读分别式什么意思?

脏读:一个事务读取了另一个事务改写但是未提交的数据时。如果改写在稍后被回滚了,那么第一个事务获取的数据就是无效的

不可重复读:一个事务执行相同的查询两次或者两次以上,但是每次都得到不同 数据。通常是因为另一个并发事务在两次查询期间更新了数据

幻读:一个事务读取了几行数据,接着另一个并发事务插入了一些数据,在随后的查询中,第一个事务发现多了一些更本不存在的数据

 

Spring注解说明?

采用扫描的方式配置SpringXMl书写方式

<context:component-scanbase-package="包名"/>

@Service:用于标注业务层组件

@Controller用于标注控制层组件

@Component 泛指组件,用于不明确的类

@Repository用户标注数据库访问组件

@PostConstruct创建对象时执行的方法

@PreDestory对象摧毁时执行的方法

@Autowired直接访问私有属性,直接给私有属性输入值

 

posted @ 2020-12-01 22:05  IT特工  阅读(72)  评论(0编辑  收藏  举报