Spring4.X 基本配置(持续更新)
这一段时间初步学习了spring的相关入门知识,下面根据本人进度总结一下spring的基本配置,假设你和我一样是刚入门的新手级别.本人既然是刚入门水平有限,难免会有理解不当表述不当等错误,本人发现错误会立刻改正.本文内容是根据实践总结出来的,只摆结论不解释,本人会根据学习进度持续更新,这些都是入门级别的配置.
Spring系列相关的常用Maven Dependency
1.Spring基本入门配置中常用到的依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
2.SpringAop常用到依赖(如果用到aspectJ)
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
3.数据库方面常用依赖(如果用到SpringJdbc,另外数据库连接池可以选择其他,dbcp2貌似至少需要jdk7版本)
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>${dbcp2.version}</version>
</dependency>
4.SpringMVC常用依赖(如果仍然使用jsp作view就需要引入jstl)
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
5.上传文件常用依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3</version>
</dependency>
6.jackson依赖(Spring mvc用到json方面)
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
7.SpringMVC中的数据检验validation
<!-- JSR-303 validation -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<!-- hibernate validator -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.9.Final</version>
</dependency>
XML文件常用配置(记得要引入相对应的jar包)
bean标签:定义一个bean让spring容器托管,默认单例.例如
<bean id="user" class="com.spring.bean.User" p:userName="小明" p:password="123"/>
.包扫描(结合注解@Component等):
<context:component-scan base-package="com.spring.service"/>
.使用aspectJ注解实现aop:
<aop:aspectj-autoproxy/>
, 结合包扫描和注解.数据库相关:(持久化技术使用SpringJDBC,数据库连接池使用dbcp2,注意相关依赖)
定义数据源
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id = "dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close" p:driverClassName="${jdbc.driver}"
p:url="${jdbc.url}" p:username="${jdbc.username}" p:password="${jdbc.password}"/>
结合jdbc.properties文件.(例如我的是放在资源根目录resources下)
# jdbc.properties
# dbcp2
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/spring?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456
由于使用到jdbcTemplate:<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" p:dataSource-ref="dataSource" />
5.SpringMVC相关配置:
配置web.xml(我其中的配置是加载resources下spring文件夹中的所有符合正则表达式demo-*.xml的文件,我有多个xml文件都需要加载,例如service和dao层就有分别的两个xml文件;所有请求的url都会被DispatcherServlet所拦截)
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>demo</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/demo-*.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
简单配置webApplicationContext(例如就是我的resources下spring文件夹中的demo-web.xml文件)
<mvc:annotation-driven/>
<mvc:default-servlet-handler/>
如果使用到jsp作为模板,还需要定义具体模板资源存放位置,例如我存放的位置是/WEB-INF/jsp/
,那么配置:<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
.记得还需要加入扫描相关类包的语句.
p:viewClass="org.springframework.web.servlet.view.JstlView" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/>
6.基于注解的声明式事务配置:
①在对应bean中加入@Transactional
注解(在类上或者在方法上)
②xml文件配置好相关的DataSource和TransactionManager
③xml文件中配置<tx:annotation-driven transaction-manager="xxxx"
7.Spring MVC拦截器配置:
①一个实现了 HandlerInterceptor接口的类,里面可以进行请求或者返回报文进行拦截(类似filter)
②在你的webApplicationContext.xml文件中注册你的类
<!-- intercepter -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="XXX" />
<bean class="XXX"/>
</mvc:interceptor>
</mvc:interceptors>
8.返回json
在对应方法上加上produces和@ResponseBody
@RequestMapping(value = "/subLogin", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
@ResponseBody
public JsonResult<?> subLogin(User user, String s){
// your code
}
你可以像我一样自己指定返回json的结构,例如我自己编写一个JsonResult<T>
类,返回的时候Spring会为你搞定一切