多个框架问题的自我整理与理解

来源:互联网 发布:东华软件待遇怎么样 编辑:程序博客网 时间:2024/06/05 02:57

一、ioc使用场景是什么?

            控制反转的目的是为了实现依赖注入,依赖注入的目的是为了解耦。

         ioc的思想在于将对象交给容器控制,而不是在对象内部直接控制,这样的话双方不会占用资源,让第三方ioc容器去管理。这样有两个好处:1.资源可以集中管理。2.降低双方的耦合度。

         比如说A要做一件事,他不需要直接依赖B,只需要告诉容器就可以了。就好像淘宝,A要买一个篮球,而B是卖篮球的,那么B是不需要直接去找A的,B也只需要告诉容器,我要卖篮球。AB进行交易,都不用自己直接去找,相当于程序内部开放接口,B通过容器作为参数传入。AB互不依赖,只有进行交易的时候才会有联系。这样的好处就是当不交易的时候就没有联系,想要有联系的时候又可以容易产生联系,通过容器去处理这样处理就会很灵活。

         应用场景:1.在调用其它组件的服务时,如果按以前的方式就是造成依赖关系的僵化和维护难度的增加,让ioc容器主动去管理这些依赖关系,就会非常灵活。

         2.set注入是spring比较常见的注入方式,那么为了防止注入异常,ioc容器还提供对特定依赖的检查。

         3.ioc容器通过配置文件的信息具有很好的阅读性,如果耦合关系发生变动的话,我们不需要重新去修改java源码,比较灵活。

         4.ioc容器可以与其他不同容器进行适配,读取不同容器的不同配置信息。

 

二、applicationContext.xml可以实现的功能

1.可以管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的生命周期

2.提供国际化的消息访问 messagesource

3.资源访问,比如说url和外部文件,

如:Resource rs = ctx. getResource(“classpath:config.properties”), “file:c:/config.properties”

4.事件传递,通过实现ApplicationContextAware接口

5.开启spring缓存

6.性能优化,可以监控dao和service的执行情况

7.与其他容器的配置进行适配

8.可以配置声明式的事物管理

 

三、切点、切面、关注点、切面类怎么理解

关注点:重复代码就是关注点,业务代码就是核心业务代码,关注点代码与业务代码分离的好处就是:关注点代码写一遍就行,开发人员只要关注核心业务,运行时期,执行核心业务代码时会动态植入关注点代码。

切面:切面是通知和切点的结合。通知和切点共同定义了关于切面的全部内容——它是什么,在何时和何处完成其他功能。

切面类:关注点形成的类,就叫切面类,对很多功能都有的重复代码进行抽取,在运行的时候往业务方法里动态植入切面类代码。

切点:起到拦截的作用,执行目标对象方法的时候,动态植入切面代码,可以通过切入点表达式,指定拦截哪些类的哪些方法,给指定的类在运行的时候植入切面类代码。

 

四、jsp servlet的关系

         Jsp是Servlet的扩展,servlet比jsp先出现,servlet是利用输出流动态生成HTML页面,包括标签和内容

         Jsp经过编译之后就变成servlet(jsp本质就是servlet,因为java虚拟机只能识别java的类,jsp代码不能识别,所以将jsp代码编译成jvm可以识别的java类)

jsp更擅长表现于页面显示,servlet更擅长于逻辑控制

jsp是servlet的一种简化,使用jsp只需要完成输入浏览器的内容,jsp中的java脚本通过jsp容器镶嵌到类中,而servlet则是个完整的java类。

 

五、aop运行机制

       Aop容器会动态创建一个代理对象给我们调用,这个代理对象会按照我们的想法将切面成功切入到目标方法的连接点上,这样切面的功能与业务逻辑的功能就能执行成功。

 

六、什么是注解,注解的作用是什么,注解怎么实现,能否自定义注解,如果没有注解怎么实现

         注解可以理解为插件,就是附加在代码中的一些信息,用于一些工具在编译、运行时进行解析使用,起说明和配置的作用,有一定的辅助性。

         首先解析所有属性,判断属性上是否存在指定的注解,如果有那根据搜索的规则取得bean,利用反射原理注入,如果标注在字段的上面,也可以通过字段的反射技术取得注解,根据搜索规则取得bean,然后利用反射技术注入

         可以自定义注解,但是在定义注解时,不能继承其他的注解或接口,用@interface自定义注解

         没有注解就只能通过人工配置的进行实现了,增加操作。

 

七、spring和springmvc的关系

         Springmvc是spring的子项目,是 mvc模式的web开发框架,要与spring的ioc和aop配合起来更加简便,打个比方就是spring是一个工具箱,那么springmvc就是工具箱里面的一个扳手。

 

八、appliacationContext.xml和bean.xml这两个文件的区别

         Spring默认的配置文件名字是applicationContext.xml,会自动去查找加载这个文件,也可以自己命名文件名字。在web.xml中加入

<context-param>

      <param-name>contextConfigLocation</param-name>

      <!--spring配置文件配置名字可以自己定 -->

      <param-value>/WEB-INF/applicationcontext.xml</param-value>

  </context-param>

如果有多个配置文件可以用;隔开加入进去

 

九、web.xml什么作用

web.xml 不是web工程必须的。

web.xml文件用来配置那些东西:欢迎页,servlet,filter等。

web.xml文件中定义了多少种标签元素,web.xml 中就可以出现它的模式文件所定义的标签元素。

用web.xml就是简化操作,便于维护

 

十、3个框架怎么整合的,怎么运行的

         表现层,也就是Controller,,是由SpringMvc来控制的,而SpringMvc是Spring的一个模块,所以不需要整合

         业务层,也就是Service,通常由Spring来管理service接口,一般使用xml配置的方式来将service接口配置到spring的配置文件中,而且事务控制一般也在service层进行配置。

         持久层,也就是dao层,而且包括实体类,由MyBaits来管理,通过spring来管理mapper接口,使用mapper的扫描器自动扫描mapper接口在spring中进行注册。

         因此,spring在ssm中占据重要地位,将MyBaits和SpringMVC揉合在一起。

         运行原理:

Database—>Entity—>Mapper.xml—>Mapper.java-->Service.java-->Controller.java-->Jsp.

 

十一、mybatis的运行原理

MyBatis根据XML配置文件创建SqlSessionFactory,SqlSessionFactory再根据配置,配置来源于两个地方,一个是配置文件,一个是Java代码的注解,获取一个SqlSession。SqlSession包含了执行sql所需要的所有方法,可以通过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完之后关闭SqlSession。

 

十二、什么叫事务,事务的特性

事物就是一系列操作,所有操作必须成功完成,否则所有更改都会回滚操作。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。事务结束只有两个结果,一种就是全部成功执行,事物提交;还有一种就是其中一个失败,发生回滚,回到最开始的状态。

原子性:事务包含的操作要么都做,要么都不做。

一致性:事物执行前后数据内在的逻辑始终是成立,比如银行转账

隔离性:在并发事务的时候不能互相影响,比如一个事务是否读到另一个未提交的事务修改的数据。

持续性:事务成功提交后,数据就是永久性的更改。


原创粉丝点击