您的当前位置:首页正文

spring入门复习资料

2024-11-13 来源:个人技术集锦

1、简述spring

      Spring是一个轻量级的IOC和AOP容器框架

2、Spring常用的三种配置

      基于XML、注解、Java的配置

3、主要模块

      Spring Core:核心类库,提供IOC服务

      Spring Context:提供框架的Bean访问方式,以及企业级功能(JNDI、定时任务)

      Spring AOP:面向切面编程

      Spring DAO:面向JDBC的抽象,简化了数据访问异常处理

      Spring ORM:对现有的ORM框架的支持

      Spring WEB:提供了基本的面向web的综合特性,例如多方文件上传

      Spring MVC:提供面向WEB应用

4、IOC和DI的对比概述

      IOC即控制反转:以前创建对象是开发人员维护,依赖㽑也是自己注入。使用Spring以后,对象创建和依赖关系由spring完成创建和注入。反转就是对象的创建的方式。由我们自己创建交给程序创建。

      DI:Dependency Injection依赖注入:当需要对象时,Spring将新建好的对象注入进来。

              注入方式:

                     ①  set方式注入 :<property name="" ref=""/>

                     ②  构造方法注入 :<constructor-arg index="" ref=""/>

                     ③  方法注入:<lookup-method name="" bean=""/>

                                  在目标对象中定义一个普通的方法,将方法的返回值设置为需要注入的依赖对象类型。

              注入类型:1、值类型注入  2、引用类型注入

     IOC和DI的优点:

              1、降低组件之间的耦合度,使软件各层之间解耦

5、spring的ioc容器中配置bean状态

       singleton(默认):单例

       prototype:非单例

       request / session/global session:web专用

6、IOC注解

             优势:简化了xml文件配置

      控制反转类型:

               @Component

               @Controller

               @Service

               @Repository

      注入类型:

                @Autowired (这个注解属于Spring):基于类型注入;可用于构造方法、成员变量、方法

                @Qualifier("bean名称"):配合@Autowired,当相同接口类型有多个实现时。如:@Service("对应名")

                 @Resource(这个注解属于J2EE的):@Resource(name="")=@Autowired+@Qualifier

3、编程式事务、声明式事务

     编程式事务:既手动控制事务;开发相对繁琐,每次都需要开启、提交、回滚

     声明式事务:spring管理,核心实现就是AOP,属于粗粒度的事务控制:只能给整个方法应用事务,不可以对方法的某几行应用事务。

4、spring框架中提供的两种实例化bean对象的工厂类型

      1)BeanFactory及其直接实现子类XmlBeanFactory

              使用时,通过getBean("")实例化一个bean

      2)ApplicationContext及其直接实现子类

              ioc容器解析时实例化所有bean

5、Spring在web.xml中的注册

       1) ContextLoaderListener:加载Spring中application.xml文件,并初始化IOC容器

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

       2) DispatcherServlet:与Spring IoC容器无缝集成,渲染视图页面

    <!-- 可以配置多个,用于加载不同的xml配置文件 -->
    <servlet>
        <servlet-name>chapter2</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- load-on-startup:加载顺序 -->
        <load-on-startup>1</load-on-startup>
        <!-- 初始化参数 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:/spring-mvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>chapter2</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
 

        3)  RequestContextListener:想让你的容器里的某个bean拥有request、session或global session。除了在bean级上配置相应的scope属性,还必须在容器级做一个额外的初始化配置。

    <!-- 此配置是Servlet 2.4后使用的 -->
    <listener>  
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>  
    </listener> 

        4) spring过滤器设置编码格式

    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

4、Spring文件上传

      1)SpringMVC中需要xml中配置

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	<!-- 默认编码 -->
	<property name="defaultEncoding" value="utf-8" />
	<!-- 文件大小最大值 -->
	<property name="maxUploadSize" value="1048" />
	<!-- 内存中的最大值 -->
	<property name="maxInMemorySize" value="40960" />
</bean>

       2)SpringBoot中的配置

                1.先在application.properties中配置

                        multipart.maxFileSize=50MB

                        multipart.maxRequestSize=50MB

                 2.在配置类中配置

                         类名上添加@Configuration,表明这是一个配置类

                         在类中添加如下代码:

                @Bean // @Bean这个注解会吧return的那个类装到spring的bean工厂里
				public MultipartConfigElement multipartConfigElement(){
					MultipartConfigFactory factory = new MultipartConfigFactory();
					factory.setMaxFileSize("10240KB");
					factory.setMaxRequestSize("102400KB");
					return factory.createMultipartConfig();
				}

      3)form表单中添加enctype="multipart/form-data"
           Controller中使用MultipartFile参数实现单文件上传
           Controller中使用HttpServletRequest接收参数然后强转为MultipartHttpServletRequest再调用.getFiles("filename");实现多文件上传

5、JDK内置计时器

    1.Timer       计时器对象 

    2.TimeTask   任务对象 (实现需求)

6、Spring定时任务   

            基于注解@Scheduled和Quartz框架

    1.基于注解@Scheduled适用于较少定时任务时

    2.Quartz框架适用于较多定时任务时,采用多线程架构保证可伸缩性。

 

7、事务
    事务需要满足四个条件:
        1、原子性
        2、一致性
        3、隔离性
        4、持久性
    事务并发读问题:
        1、脏读:读取到另一个事务未提交的数据
        2、不可重复度:两次读取不一致(数据被修改)
        3、幻读:读到另一个事务已插入一条数据(新增删除数据)
    事务四大隔离级别:
        1、串行化(最严格,性能最差)
            不会发生任何并发问题
            性能最差
        2、可重复度
            防止脏读和不可重复读,不能防止幻读
            性能较上个好
        3、读已提交
            防止脏读,不防止不可重复读和幻读
            性能较上个好
        4、读未提交
            可能出现任何事物并发问题,什么都没处理
            性能最好

8、webservice应用程序

       web应用程序:基于BS架构的,用于处理基于HTTP协议请求的一个类或者一组类 组成的一个模块/功能,每一个模块 或者 每一个功能 都可以抽象成一个web应用程序.

       webservice应用程序:特殊的web应用程序、将程序中的某个功能或某个模块 发布给 其他工程进行访问

 

       webservice服务器端:用于发布webservice程序

       webservice客户端:通过webservice技术访问其他服务器发布的webservice程序

 

      webservice技术 : 
               axis2  重量级的webservice技术;必须配置在服务器中进行使用 [jndi方式进行访问]
               xfire  提供了myeclipse内置集成
               cxf 提供了spring集成 

9、cxf 

      1 基于cxf - webservice程序的发布
          webservice服务器端

          1.1 在spring环境下添加cxf框架支持
                a 导入cxf提供的核心jar 以及spring提供的整合jar
                b 在ioc容器中导入cxf提供的命名空间、schame文件
                c 在ioc容器中导入cxf提供的第三方辅助xml文件
                     cxf.xml 
                     cxf-servlet.xml
                     cxf-extension-soap.xml

          1.2 在spring环境下,使用cxf发布webservice应用程序
                 a 提供一个普通的web应用程序
                     webservice技术底层采用接口编程
                     将一个普通的web应用程序 发布给 其他工程进行使用的话
                     不能将这个程序的具体实现发布出去
                     发布webservice,只需要将该程序的声明发布出去
                     接口
                 b 为需要发布成webservice应用程序的普通程序提供接口实现,
                 c 使用 @WebService 标注需要发布成webserivce程序的对象及其实现的接口
                 d 在ioc容器中配置发布的过程

                 e 注册一个用于接收其他工程向本工程发送的webservice请求的中央控制器(请求接收器)
                       web.xml 
                       CXFServlet

                测试发布是否成功

                http://localhost:8080/cxf_server/ws/hello?wsdl

                将访问的接口 以 wsdl 格式 展示出来

                wsdl  webservice底层文件协议
                     底层采用xml技术实现

                 webservice技术会将所有发布的webservice程序以xml形式进行存储和交互


2 webservice客户端
    使用cxf访问其他工程发布的webservice应用程序

2.1 非spring环境下
    直接使用cxf进行访问

    a 创建java工程 , 添加cxf 核心jar(12)
    客户端访问webservice应用程序也是基于接口方式
    b 将服务器发布的webservice应用程序提供的接口添加到客户端程序中
    保证客户端使用的接口必须和服务器提供的接口一模一样

2.2 spring环境下 , 集成的方式进行访问

    
    接口方式 : 
    仅适用于服务器端和客户端使用java语言


配置cxf环境变量 : 
    cxf_home  D:\apache-cxf-2.7.17
    path      D:\apache-cxf-2.7.17\bin
    classpath D:\apache-cxf-2.7.17\lib
 

显示全文