框架技术面试题

1. SpringMVC的运行流程及原理

在这里插入图片描述

    1. 用户发送请求到前端控制器(DipatcherServlet)
    1. 前端控制器把请求url发送到处理器映射器(HandlerMapper),处理器映射器根据url找到处理器。
    1. 处理器映射器返回处理器(handler)到前端控制器。
    1. 前端控制器向处理适配器请求执行handler
    1. 执行完handler后,返回ModelAndView到处理适配器
    1. 前端控制器请求视图解析器解析,根据逻辑视图名解析成真正的视图。
    1. 视图解析器向前端控制器返回view。
    1. 视图渲染,将视图模型数据填充到request域中
    1. 前端控制器向用户响应结果

2. Spring常用注解

  • 声明bean的注解
    @Compoent:组件,没有明确的角色
    @service:在业务逻辑层使用(service层)
    @Repository:在数据访问层使用(dao层)
    @Controller:在展示层使用,控制器的声明(Controller)
  • 注入bean的注解
    @Autowired:默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。
    @Resource:默认按名称装配,当找不到与名称匹配的bean才会按类型装配。
  • java配置类相关注解
    @Configuration:声明当前类为配置类,相当于xml形式的Spring配置(类上)
    @Bean 注解在方法上,声明当前方法的返回值为一个bean,替代xml中的方式(方法上)

3. SpringBoot常用注解

@SpringBootApplication:创建项目的时候,入口类默认创建的注解。是一个组合注解,包含了多个注解。其中比较重要的注解有:

  • @SpringBootConfiguration
  • @EnableAutoConfiguration
  • @ComponentScan

4. hibernate中get,load方法的区别

  • load加载方式
    当使用load方法来得到一个对象时,此时hibernate会使用延迟加载的机制来加载这个对象
    当使用session.load() 方法加载一个对象的时候,并不会发出SQL语句,这个对象其实就是一个代理对象,而这个代理对象只是保存实体对象的id值,只有当我们使用这个对象,得到其他属性的时候,这个时候才会发出SQL语句,从数据库中查询相对于的对象

  • get加载方式
    相对于load的延迟加载方式,get就直接的多,当我们使用session.get()方法来得到一个对象时,不管我们使不使用这个对象,此时都会发出sql语句去从数据库中查询出来:

猜你喜欢

转载自blog.csdn.net/yang13676084606/article/details/110531006