《spring初识》

前言:

       我希望我的希望不再是希望

正文:

      spring-who

          1.spring是一个轻量级的控制反转(IOC,也可称之为依赖注入(DI))和面向切面(AOP)的容器框架,可以管理web层、持久层、业务层、dao层,spring可以配置各个层的组件,并且维护各个层的关系,由Rod Johnson创建,用来装Javabean(java对象),中间层框架(万能胶)可以起一个连接作用,比如说把struts和hibernate粘合在一起运用。

          2.目的:解决企业应用开发的复杂性

          3.功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能。

          4.范围:任何java应用

          5.架构图:

         6.常用注解:

          @Component-------spring bean      @Repository----------DAO     @Service------业务逻辑  @Controller------控制器

     spring-why

          总述一句话:让使用者只关心核心业务的开发,框架帮你屏蔽原有技术跟业务开发无关的各类技术问题。

          分述:可从spring的核心机制IOC和AOP入手:

         (1)IOC-------松耦合

         java应用都是由多个类组成,它们之间相互协作来完成特定的业务逻辑,每个对象之间相互联系,导致高度耦合的代码。使用IOC机制可以在一定程度上解耦。

        (2)AOP------内聚性

           AOP允许把遍布应用各处的功能分离出来形成可重用的组件。

        (3)springMVC

           SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping @RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。此外Controller 不会直接依赖于HttpServletRequest HttpServletResponse HttpServlet 对象,它们可以通过Controller 的方法参数灵活的获取到

        spring-how

             1.IOC:本身公司项目用的框架是SSM,spring的一些特性都会在项目中用到,比如IOC负责类的创建和销毁,对web层、service层、DAO层等的维护和管理

              2.AOP:项目中的日志打印和异常处理用到了AOP

              3.spring是一个容器容器框架,可以与很多框架集成。在公司的项目中用到了:

               (1)dubbo

                  资源调度和治理中心的管理工具,采用全spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用spring加载dubbo的配置即可,dubbo基于spring的schema扩展进行加载,注册中心为zookeeper。

               (2)redis

                Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

                redis的持久化方案:           

                Redis的所有数据都是保存到内存中的。

                <1>Rdb:快照形式,定期把内存中当前时刻的数据保存到磁盘。Redis默认支持的持久化方案。

               <2>aof形式:append only file。把所有对redis数据库操作的命令,增删改操作的命令。保存到文件中。数据库恢复时把所有的命令执行一遍即可

                在公司的项目中,资源预加载用到了redis缓存;数据字典的查询用到了spring-data-redis,来提高性能。

               (3)Druid

               Druid是一个高效的数据查询系统,主要解决的是对于大量的基于时序的数据进行聚合查询。数据可以实时摄入,进入到Druid后立即可查,同时数据是几乎是不可变。通常是基于时序的事实事件,事实发生后进入Druid,外部系统就可以对该事实进行查询。

              

         

            Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。

            Druid内置提供了一个StatViewServlet用于展示Druid的统计信息,提供监控信息展示的html页面 ,提供监控信息的JSON API 

          (4)MQ

            消息总线(Message Queue),后文称MQ,是一种跨进程的通信机制,用于上下游传递消息。公司项目中选课业务中用到。在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了MQ之后,消息发送上游只需要依赖MQ,逻辑上和物理上都不用依赖其他服务。

             优点:高并发,松耦合

             不足:

                    系统更复杂,多了一个MQ组件             消息传递路径更长,延时会增加

                   消息可靠性和重复性互为矛盾,消息不丢不重难以同时保证     上游无法知道下游的执行结果,这一点是很致命的

           (5)mybatis

           MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。 使用这个类库中的类, Spring 将会加载必要的 MyBatis 工厂类和 session 类。 这个类库也提供一个简单的方式来注入 MyBatis 数据映射器和 SqlSession 到业务层的 bean 中。 而且它也会处理事务, 翻译 MyBatis 的异常到 Spring 的 DataAccessException 异常(数据访问异常,译者注)中。最终,它并 不会依赖于 MyBatis,Spring 或 MyBatis-Spring 来构建应用程序代码。

结语:

            

猜你喜欢

转载自blog.csdn.net/yxf15732625262/article/details/81318754