spring的理解
1.首先Spring是一个开源的框架,Spring为简化企业级应用开发而生,使用Spring可以使简单的JavaBean实现以前只有EJB才能实现的功能。Spring是一个IOC和AOP容器框架。
在java开发领域,Spring相对于EJB来说是一种轻量级的,非侵入性的Java开发框架。
Spring主要核心是:
(1).控制反转(IOC):以前传统的java开发模式中,当需要一个对象时我们,我们会自己使用new或者getInstance等直接或者间接调用构造方法创建一个对象,而在Spring开发模式中,Spring容器使用了工厂模式为我们创建了所需要的对象,我们使用时不需要自己去创建,直接调用Spring为我们提供的对象即可,这就是控制反转的思想。实例化一个java对象有三种方式:使用类构造器,使用静态工厂方法,使用实例工厂方法,当使用spring时我们就不需要关心通过何种方式实例化一个对象,spring通过控制反转机制自动为我们实例化一个对象。
(2).依赖注入(DI):Spring使用java Bean对象的Set方法或者带参数的构造方法为我们在创建所需对象时将其属性自动设置所需要的值的过程就是依赖注入的基本思想。
(3).面向切面编程(AOP):在面向对象编程(OOP)思想中,我们将事物纵向抽象成一个个的对象。而在面向切面编程中,我们将一个个对象某些类似的方面横向抽象成一个切面,对这个切面进行一些如权限验证,事物管理,记录日志等公用操作处理的过程就是面向切面编程的思想。
2.在Spring中,所有管理的对象都是JavaBean对象,而BeanFactory和ApplicationContext就是spring框架的两个IOC容器,现在一般使用ApplicationnContext,其不但包含了BeanFactory的作用,同时还进行更多的扩展。
SpringMvc的理解
SpringMVC工作原理
SpringMvc是基于过滤器对servlet进行了封装的一个框架,我们使用的时候就是在web.xml文件中配置DispatcherServlet类;SpringMvc工作时主要是通过DispatcherServlet管理接收到的请求并进行处理。
具体执行流程如下:
SpringMVC工程流程描述
1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获;
2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回;
3. DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(...)方法)
4. 提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。 在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:
HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息
数据转换:对请求消息进行数据转换。如String转换成Integer、Double等
数据根式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等
数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中
5. Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象;
6. 根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet ;
7. ViewResolver 结合Model和View,来渲染视图
8. 将渲染结果返回给客户端。
Mybatis理解
1.Mybatis其实是一个持久层框架,主要支持SQL查询,存储过程以及高级映射。个人理解其实就是一个框架,让我更方便并且更规范的连接数据库对数据库数据操作。
Mybatis核心组件:
1. SqlSessionFacotryBuilder(构造器),会根据配置信息或者代码来生成SqlSessionFactory(工厂接口)
2.SqlsessionFactory:依靠工厂来生成Session(会话)
3.SqlSession:是一个既可以发送SQL去执行并返回结果,也可以获取Mapper接口
4.SQL Mapper:它是Mybatis新设计的组件,它是由一个java接口和xml文件(或注解)构成的,需要给出对应的SQL和映射规 则。它负责发送SQL去执行,并返回结果
常用注解
@Controller 将该类标注为控制层,控制层是视图层和业务层的桥梁,负责接收前台的请求,并且将
后台处理数据传送给前台。
@Service 将该类标注为业务层,开发人员可以在这一层编写业务逻辑,而不需要更多的关注如何
与数据库进行交互。
@Component 将该类定义类DAO层,负责与数据库进行数据交互。
@RequestMapping 匹配前台请求路径,可以标注在类之上,也可以标注在方法上面,然后类与方法进行
路径拼接。
@Resource 对象的注入,可以将容器创建的对象直接注入到需要的类中。@Autowired是按照类型注入,
而@Resource的装配顺序是如果指定名称或者没有指定时,按照名称装配;如果指定类型时,按照类型
装配。
@ResponseBody 这个注解很好用,是将后台需要返回的Map、list、字符串或者对象自动封装成json格式,
但是后台需要引入对应的jar包,jackson-all.jar、jackson-mapping.jar等。
@Transactional 这个注解标注方法为事务,保持操作的原子性,如果成功就提交;如果抛出异常,就
回滚。但是在容器的配置文件中需要配置事务。