首页 > 编程知识 正文

ssm面试题及答案,java和javaee有什么区别

时间:2023-05-03 08:29:56 阅读:146149 作者:3761

【zzdxh加油】: hello你好。 我是zzdxh。 很高兴你读了。 昵称希望自己不断精进,向优秀的程序员迈进。

博客来自于对项目和编程中遇到的问题的总结。 偶尔有读书共享。 不断更新相关知识点的总结,包括Java前端、后台、数据库和项目案例。 谢谢你帮我读。 我希望我的博客能帮助更多的人,分享和获取新的知识,大家一起进步。

等待采石的人应该抱着大教堂的心。 希望你们能赶到各自的爱里……

有关JAVA基础面焊接问题,请参见JAVA基础问题集

(按Spring-SpringMVC-Mybatis顺序组织文章目录1 )什么是IoC和DI? 2. DI是怎么实现的? 3 .说明什么是面向切割的编程(AOP )? 说明Spring框架中Bean的生命周期? 5. Spring中的APP原理是什么? 6. Spring主要使用什么模式? 简单说明Spring的事务? 8. SpringMVC的核心是什么? 请求流程如何处理? 9 .在9. MyBatis中用#和$写占位符有什么不同? 10 .我的电池有什么好处? 11 .我要简要介绍my batis的l1和l2缓存吗? 12.MyBatis的动态SQL是什么意思? 1-3 .我的电池工作原理概述

1 .什么是IOC和DI? IoC (独立注入)称为控制反转(control control inversion of control ),从属注入(di )是对IoC的更简单的解释。 控件反转是将传统由程序代码直接操作的对象的调用权传递给容器,通过容器实现对象组件的组装和管理。 反向控制是对组件对象控制权的转移,它从程序代码本身转移到外部容器,容器创建对象并管理对象之间的依赖关系。

国际奥委会体现了好莱坞的原则“don’tcallme,we will call you”。 依赖注入的基本原则是,APP应用程序组件不负责查找资源或其他依赖的协作对象。 设置对象的工作由容器负责,搜索资源的逻辑必须从APP应用程序组件的代码中提取,然后交给容器处理。

DI更准确地描述了IoC,组件之间的依赖关系由容器在运行时确定,在映像上容器动态地向组件注入某种依赖关系。 2. DI是怎么实现的? 依赖注入采用setter方法进行property name=' id ' value=' 1314 '/property构造器注入(用构造函数方法进行构造函数索引='0' type=' Java.lava constructor-arg初始化接口注入这三种方式通常使用构建器注入来注入必需的依赖关系。 对于可选依赖关系,setter注入是合适的。 setter注入要求类提供无参数生成器或无参数静态工厂方法来创建对象。

总结: IoC解决了对象之间的依赖关系问题,并通过配置文件或注释关联所有Bean的依赖关系来降低绑定度。 3 .说明什么是面向切割的编程(AOP )? 面向对象的编程(AOP )是一种新的模块化机制,用于描述分布在对象、类或方法之间的横向关注点 Spring IoC容器找到并实例化Bean的定义。 Spring IoC容器对Bean进行依赖注入。 如果bean实现了BeanNameAware接口,则将该bean的id传递给setBeanName方法。 如果Bean实现了BeanFactoryAware接口,则将BeanFactory对象传递给setBeanFactory

方法。 如果Bean实现了BeanPostProcessor接口,请调用它

postprocessbeforeinitialization方法。 如果Bean实现了初始化Bean接口,则调用其afterPropertySet方法。 如果存在与Bean关联的BeanPostProcessors对象,则会调用这些对象的postProcessAfterInitialization方法。 销毁bean实例时,如果bean实现了DisposableBean接口,则调用其destroy方法。 5. Spring中的APP原理是什么? 实现AOP的技术主要分为两大类。 一种是采用动态代理技术,利用截取消息对消息进行装饰,以替代原目标行为的执行。 第二,静态组织允许编译器引入特定语法来创建“方面”,以便编译器在编译时组织有关“方面”的代码。 通过反射创建动态代理对象,阻止方法的执行,然后插入并执行自己需要额外执行的代码。 6. Spring主要使用什么模式? 工厂模式:每个Bean

的创建通过方法单例模式:默认的每个Bean的作用域都是单例代理模式:关于Aop的实现通过代理模式 7. 简述Spring 中的事务 ? ①编程式事务管理:编程方式管理事务,极大灵活性,难维护。②声明式事务管理:可以将业务代码和事务管理分离,用注解和xml配置来管理事务。 8. SpringMVC的核心是什么,请求的流程是怎么处理的 ? springmvc 是基于 servlet 的前端控制框架,核心是 ioc 和 aop(基于 spring 实现)

请求流程结合图形脑补记忆

1、客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet.

2、DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参数Cookie等)以及HandlerMapping的配置找到处理请求的处理器(Handler)。

3-4、DispatcherServlet根据HandlerMapping找到对应的Handler,将处理权交给Handler(Handler将具体的处理进行封装),再由具体的HandlerAdapter对Handler进行具体的调用。

5、Handler对数据处理完成以后将返回一个ModelAndView()对象给DispatcherServlet。

6、Handler返回的ModelAndView()只是一个逻辑视图并不是一个正式的视图,DispatcherSevlet通过ViewResolver将逻辑视图转化为真正的视图View。

7、Dispatcher通过model解析出ModelAndView()中的参数进行解析最终展现出完整的view并返回给客户端。

9. MyBatis 中使用 # 和 $ 书写占位符有什么区别 ? ①#将传入的数据都当成一个字符串,会对传入的数据自动加上引号② $将传入的数据直接显示生成在 SQL 中。注意:使用 $ 占位符可能会导致 SQL 注射攻击,能用#的地方就不要使用 $ ,写 order by 子句的时候应该用$而不是#。 10.Mybatis的好处 ? ①把Sql语句从Java中独立出来。②封装了底层的JDBC,API的调用,并且能够将结果集自动转换成JavaBean对象,简化了Java数据库编程的重复工作。③自己编写Sql语句,更加的灵活。④入参无需用对象封装(或者map封装),使用@Param注解。 11.简述Mybatis的一级缓存和二级缓存 ?

①一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。(但是增删改查等数据库操作都会清空缓存)。

②二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。

12.MyBatis 中的动态 SQL 是什么意思 ? 对于一些复杂的查询,我们可能会指定多个查询条件,但是这些条件可能存在也可能不存在,例如在 58同城上面找房子,我们可能会指定面积、楼层和所在位置来查找房源,也可能会指定面积、价格、户型和所在位置来查找房源,此时就需要根据用户指定的条件动态生成 SQL 语句。如果不使用持久层框架我们可能需要自己拼装 SQL 语句,还好 MyBatis 提供了动态 SQL 的功能来解决这个问题。MyBatis中用于实现动态 SQL 的元素主要有: ifchoose / when / otherwisetrimwheresetforeach 13.Mybatis工作原理简述

①通过SqlSessionFactoryBuilder从mybatis-config.xml配置文件中构建出SqlSessionFactory。②SqlSessionFactory开启一个SqlSession,通过SqlSession实例获得Mapper对象并且运行Mapper映射的Sql语句。③完成数据库的CRUD操作和事务提交,关闭SqlSession。 Invest in yourself and improve yourself

2020.03.15. 记录zzdxh的第28篇博客

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。