spring3.x版本的一个重大改变就是模块化分包。原来的集成在spring核心中的许多功能都被模块化分解出来,使得spring-core的核心功能只剩下了两个,Ioc(依赖注入)和Aop(面向切面)。
aspectj:
spring依赖于aspectj是因为spring的aop,其实是对aspectj包装。所以在使用spring时,需要显示引入aspectj。且在Maven中引入spring时,aspectj不会做为它的依赖包引入。使用spring时千万要aspectj包,虽然看起来好像没有用到的
<!--pom.xml配置--><dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.4</version>
<scope>compile</scope></dependency>
spring-jdbc:
在使用spring3.2.11版本的时候,发现原本内置在spring-core的jdbc功能被分离出来。一个独立的spring-jdbc包,如果不引入的话。那么配置的数据源的配置,就会报错所以需要引入它:
<!-- spring JDBC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>3.2.11.RELEASE</version>
</dependency>
spring-tx:
用spring整合ORM框架时(mybatis,hibernate),使用tx标签配置事务管理器。这个tx的功能也被分离出一个独立的jar:
<!-- spring tx -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>3.2.11.RELEASE</version>
</dependency>
spring-mvc:
使用spring做web项目,spring-mvc是必不可少。其实,不仅是web项目,只要用的mvc的架构,spring-mvc就是需要的。比如,常用的@service注解,虽然这是service层的注解,但是spring是将其整合到了spring-mvc的jar包。
<!-- spring MVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.2.11.RELEASE</version>
</dependency>
Maven引入顺序:
使用spring时,尽量将同类的jar包在maven配置中,放到一起。其中,尤为要注意的是,要把spring-core放在第一个。加载的其他jar包,要spring-core保持一致。这样才能面引入依赖时,出现引入多个版本冲突问题。这个问题,junit测试中反映不出来,但是服务器运行之时,因为服务器的加载机制,会偏向于加载同一个包中比较低版本的包。这样就会出现问题。
commons-fileupload:
commons-fileupload是用户web项目中常用的上传文件所需要用的jar。一般在项目构建的初期就会将此包引入,并且与spring整合配置。
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
配置spring-mvc.xml:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
<property name="maxUploadSize">
<value>32505856</value><!-- 上传文件大小限制为31M,31*1024*1024 -->
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
</bean>
视图:
配置jsp视图在spring注解中不用加后缀:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/" p:suffix=".jsp" />
拦截问题:
使用spring拦截器拦截请求时,如果出现找不到url的时候,需要将配置的spirng拦截的servlet配置为拦截“/”:
<!-- spring mvc servlet -->
<servlet>
<description>spring mvc servlet</description>
<servlet-name>springMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<description>spring mvc 配置文件</description>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>