Java Spring 后端项目搭建
参考了几位同行的Blogs和StackOverflow上的许多问答,搭建了此后端项目,替换原来的node.js后端,和前一篇中搭建的Vue Web App项目配合使用,后端准备只提供服务,不包含后端装配的页面,打算只使用MongoDb和Redis,所以JPA部分注释掉了,可打开使用,核心文件如下,供需要的人参考。
pom.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>JavaWeb</groupId>
- <artifactId>JavaWeb</artifactId>
- <version>1.0</version>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.8</source>
- <target>1.8</target>
- </configuration>
- </plugin>
- </plugins>
- </build>
- <properties>
- <org.springframework.version>5.0.5.RELEASE</org.springframework.version>
- </properties>
- <dependencies>
- <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- <version>3.7</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-collections4</artifactId>
- <version>4.1</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-compress -->
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-compress</artifactId>
- <version>1.16.1</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 -->
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-math3</artifactId>
- <version>3.6.1</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-io -->
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-io</artifactId>
- <version>1.3.2</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-pool2</artifactId>
- <version>2.5.0</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-text -->
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-text</artifactId>
- <version>1.3</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-configuration2 -->
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-configuration2</artifactId>
- <version>2.2</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-proxy -->
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-proxy</artifactId>
- <version>1.0</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/commons-cli/commons-cli -->
- <dependency>
- <groupId>commons-cli</groupId>
- <artifactId>commons-cli</artifactId>
- <version>1.4</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- <version>2.9.5</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>2.9.5</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-annotations</artifactId>
- <version>2.9.5</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/com.fasterxml.uuid/java-uuid-generator -->
- <dependency>
- <groupId>com.fasterxml.uuid</groupId>
- <artifactId>java-uuid-generator</artifactId>
- <version>3.1.5</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>1.7.25</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.slf4j/jcl-over-slf4j -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>jcl-over-slf4j</artifactId>
- <version>1.7.25</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-core</artifactId>
- <version>2.11.0</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-api</artifactId>
- <version>2.11.0</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl -->
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-slf4j-impl</artifactId>
- <version>2.11.0</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-web -->
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-web</artifactId>
- <version>2.11.0</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <version>1.16.20</version>
- <scope>provided</scope>
- </dependency>
- <!-- https://mvnrepository.com/artifact/junit/junit -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.12</version>
- <scope>test</scope>
- </dependency>
- <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>4.0.0</version>
- <scope>provided</scope>
- </dependency>
- <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
- <dependency>
- <groupId>javax.servlet.jsp</groupId>
- <artifactId>javax.servlet.jsp-api</artifactId>
- <version>2.3.1</version>
- <scope>provided</scope>
- </dependency>
- <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>jstl</artifactId>
- <version>1.2</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
- <version>${org.springframework.version}</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- <version>${org.springframework.version}</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-tx</artifactId>
- <version>${org.springframework.version}</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>${org.springframework.version}</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context-support</artifactId>
- <version>${org.springframework.version}</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-aop</artifactId>
- <version>${org.springframework.version}</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-aspects</artifactId>
- <version>${org.springframework.version}</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
- <version>${org.springframework.version}</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- <version>${org.springframework.version}</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- <version>${org.springframework.version}</version>
- <scope>test</scope>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.springframework.session/spring-session-core -->
- <dependency>
- <groupId>org.springframework.session</groupId>
- <artifactId>spring-session-core</artifactId>
- <version>2.0.2.RELEASE</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.springframework.session/spring-session-data-redis -->
- <dependency>
- <groupId>org.springframework.session</groupId>
- <artifactId>spring-session-data-redis</artifactId>
- <version>2.0.2.RELEASE</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-jpa -->
- <dependency>
- <groupId>org.springframework.data</groupId>
- <artifactId>spring-data-jpa</artifactId>
- <version>2.0.6.RELEASE</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-core</artifactId>
- <version>5.2.16.Final</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager -->
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-entitymanager</artifactId>
- <version>5.2.16.Final</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-validator</artifactId>
- <version>6.0.9.Final</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.1.6</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-mongodb -->
- <dependency>
- <groupId>org.springframework.data</groupId>
- <artifactId>spring-data-mongodb</artifactId>
- <version>2.0.6.RELEASE</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver -->
- <dependency>
- <groupId>org.mongodb</groupId>
- <artifactId>mongo-java-driver</artifactId>
- <version>3.6.3</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-mongodb -->
- <dependency>
- <groupId>org.springframework.data</groupId>
- <artifactId>spring-data-redis</artifactId>
- <version>2.0.6.RELEASE</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
- <dependency>
- <groupId>redis.clients</groupId>
- <artifactId>jedis</artifactId>
- <version>2.9.0</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
- <version>4.5.5</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpcore</artifactId>
- <version>4.4.9</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/net.sf.ehcache/ehcache -->
- <dependency>
- <groupId>net.sf.ehcache</groupId>
- <artifactId>ehcache</artifactId>
- <version>2.10.5</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/com.corundumstudio.socketio/netty-socketio -->
- <dependency>
- <groupId>com.corundumstudio.socketio</groupId>
- <artifactId>netty-socketio</artifactId>
- <version>1.7.15</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.bytedeco.javacpp-presets/ffmpeg -->
- <dependency>
- <groupId>net.bramp.ffmpeg</groupId>
- <artifactId>ffmpeg</artifactId>
- <version>0.6.2</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
- <dependency>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi</artifactId>
- <version>3.17</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
- <dependency>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi-ooxml</artifactId>
- <version>3.17</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-scratchpad -->
- <dependency>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi-scratchpad</artifactId>
- <version>3.17</version>
- </dependency>
- </dependencies>
- </project>
web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
- version="3.1">
- <!-- Session -->
- <filter>
- <filter-name>springSessionRepositoryFilter</filter-name>
- <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>springSessionRepositoryFilter</filter-name>
- <url-pattern>/*</url-pattern>
- <dispatcher>REQUEST</dispatcher>
- <dispatcher>ERROR</dispatcher>
- </filter-mapping>
- <servlet>
- <servlet-name>dispatcher</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <!--<init-param>-->
- <!--<param-name>contextConfigLocation</param-name>-->
- <!--<param-value>/WEB-INF/applicationContext.xml</param-value>-->
- <!--</init-param>-->
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>dispatcher</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
- <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>
- <filter-mapping>
- <filter-name>encodingFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/WEB-INF/applicationContext.xml</param-value>
- </context-param>
- <context-param>
- <param-name>log4jConfiguration</param-name>
- <!-- 日志配置文件路径,请根据具体项目自行调整 -->
- <param-value>classpath:META-INF/log4j2.xml</param-value>
- </context-param>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- </web-app>
applicationContext.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:mongo="http://www.springframework.org/schema/data/mongo"
- xmlns:cache="http://www.springframework.org/schema/cache"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-2.5.xsd
- http://www.springframework.org/schema/data/mongo
- http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
- http://www.springframework.org/schema/cache
- http://www.springframework.org/schema/cache/spring-cache-3.1.xsd">
- <context:property-placeholder location="classpath*:META-INF/config.properties"/>
- <!-- SpringData类型转换器 -->
- <!--<mongo:mapping-converter id="mongoConverter">-->
- <!--<mongo:custom-converters>-->
- <!--<mongo:converter>-->
- <!--<bean class="com.jastar.demo.converter.TimestampConverter" />-->
- <!--</mongo:converter>-->
- <!--</mongo:custom-converters>-->
- <!--</mongo:mapping-converter>-->
- <mongo:mongo-client id="mongo" host="${mongo.host}" port="${mongo.port}">
- <mongo:client-options connections-per-host="${mongo.connectionsPerHost}"
- threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
- connect-timeout="${mongo.connectTimeout}" max-wait-time="${mongo.maxWaitTime}"
- socket-keep-alive="${mongo.socketKeepAlive}" socket-timeout="${mongo.socketTimeout}"/>
- </mongo:mongo-client>
- <!-- mongo的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建 -->
- <mongo:db-factory id="mongoDbFactory" dbname="${mongo.dbname}"
- mongo-ref="mongo"/>
- <!-- mongodb的主要操作对象,所有对mongodb的增删改查的操作都是通过它完成 -->
- <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
- <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
- <!--<constructor-arg name="mongoConverter" ref="mongoConverter" />-->
- </bean>
- <context:component-scan base-package="com.company.framework.dao"/>
- <mongo:repositories base-package="com.company.framework.dao"/>
- <!-- redis数据源 -->
- <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
- <!-- 池中可借的最大数 -->
- <property name="maxTotal" value="${redis.maxTotal}"/>
- <!-- 允许池中空闲的最大连接数 -->
- <property name="maxIdle" value="${redis.maxIdle}"/>
- <!-- 允许池中空闲的最小连接数 -->
- <property name="minIdle" value="${redis.minIdle}"/>
- <!-- 获取连接最大等待时间(毫秒) -->
- <property name="maxWaitMillis" value="${redis.maxWaitMillis}"/>
- <!-- 当maxActive到达最大数,获取连接时的操作 是否阻塞等待 -->
- <property name="blockWhenExhausted" value="${redis.blockWhenExhausted}"/>
- <!-- 在获取连接时,是否验证有效性 -->
- <property name="testOnBorrow" value="${redis.testOnBorrow}"/>
- <!-- 在归还连接时,是否验证有效性 -->
- <property name="testOnReturn" value="${redis.testOnReturn}"/>
- <!-- 当连接空闲时,是否验证有效性 -->
- <property name="testWhileIdle" value="${redis.testWhileIdle}"/>
- <!-- 设定间隔没过多少毫秒进行一次后台连接清理的行动 -->
- <property name="timeBetweenEvictionRunsMillis" value="${redis.timeBetweenEvictionRunsMillis}"/>
- <!-- 每次检查的连接数 -->
- <property name="numTestsPerEvictionRun" value="${redis.numTestsPerEvictionRun}"/>
- </bean>
- <!-- Spring-redis连接池管理工厂 -->
- <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
- <!-- IP地址 -->
- <property name="hostName" value="${redis.hostName}"/>
- <!-- 端口号 -->
- <property name="port" value="${redis.port}"/>
- <!-- 超时时间 默认2000-->
- <property name="timeout" value="${redis.timeout}"/>
- <!-- 连接池配置引用 -->
- <property name="poolConfig" ref="jedisPoolConfig" />
- <!-- usePool:是否使用连接池 -->
- <property name="usePool" value="true"/>
- </bean>
- <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
- <property name="connectionFactory" ref="jedisConnectionFactory"/>
- <property name="keySerializer">
- <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
- </property>
- <property name="valueSerializer">
- <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
- </property>
- <property name="hashKeySerializer">
- <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
- </property>
- <property name="hashValueSerializer">
- <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
- </property>
- <!--开启事务 -->
- <property name="enableTransactionSupport" value="true"></property>
- </bean>
- <bean id="redisHttpSessionConfiguration"
- class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"/>
- <cache:annotation-driven cache-manager="cacheManager" />
- <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
- <property name="cacheManager" ref="ehcache"></property>
- </bean>
- <bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
- <property name="configLocation" value="classpath:META-INF/ehcache-setting.xml"></property>
- </bean>
- </beans>
dispatcher-servlet.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:mvc="http://www.springframework.org/schema/mvc"
- xmlns:jpa="http://www.springframework.org/schema/data/jpa"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/mvc
- http://www.springframework.org/schema/mvc/spring-mvc.xsd
- http://www.springframework.org/schema/data/jpa
- http://www.springframework.org/schema/data/jpa/spring-jpa-1.0.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx.xsd">
- <context:component-scan base-package="com.company.framework.component"/>
- <context:component-scan base-package="com.company.framework.service"/>
- <!--指明 controller 所在包,并扫描其中的注解-->
- <context:component-scan base-package="com.company.framework.controller"/>
- <!-- 静态资源(js、image等)的访问 -->
- <mvc:default-servlet-handler/>
- <!-- 开启注解 -->
- <mvc:annotation-driven/>
- <!--ViewResolver 视图解析器-->
- <!--用于支持Servlet、JSP视图解析-->
- <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
- <property name="prefix" value="/WEB-INF/pages/"/>
- <property name="suffix" value=".jsp"/>
- </bean>
- <!-- 表示JPA Repository所在的包 -->
- <!--<jpa:repositories base-package="com.company.framework.dao2"/>-->
- <!--<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">-->
- <!--<property name="persistenceUnitName" value="defaultPersistenceUnit"/>-->
- <!--</bean>-->
- <!-- 事务管理 -->
- <!--<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">-->
- <!--<property name="entityManagerFactory" ref="entityManagerFactory"/>-->
- <!--</bean>-->
- <!--<tx:annotation-driven transaction-manager="transactionManager"/>-->
- <!-- make spring look up annotation -->
- <context:annotation-config/>
- </beans>
ehcache-setting.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <ehcache>
- <!-- 指定一个文件目录,当EhCache把数据写到硬盘上时,将把数据写到这个文件目录下 -->
- <diskStore path="java.io.tmpdir"/>
- <!--name:缓存名称-->
- <!--maxElementsInMemory:内存中最大缓存对象数-->
- <!--maxElementsOnDisk:硬盘中最大缓存对象数,若是0表示无穷大-->
- <!--eternal:true表示对象永不过期,此时会忽略timeToIdleSeconds和timeToLiveSeconds属性,默认为false-->
- <!--overflowToDisk:true表示当内存缓存的对象数目达到了-->
- <!--maxElementsInMemory界限后,会把溢出的对象写到硬盘缓存中。注意:如果缓存的对象要写入到硬盘中的话,则该对象必须实现了Serializable接口才行。-->
- <!--diskSpoolBufferSizeMB:磁盘缓存区大小,默认为30MB。每个Cache都应该有自己的一个缓存区。-->
- <!--diskPersistent:是否缓存虚拟机重启期数据,是否持久化磁盘缓存,当这个属性的值为true时,系统在初始化时会在磁盘中查找文件名 为cache名称,后缀名为index的文件,这个文件中存放了已经持久化在磁盘中的cache的index,找到后会把cache加载到内存,要想把 cache真正持久化到磁盘,写程序时注意执行net.sf.ehcache.Cache.put(Element element)后要调用flush()方法。-->
- <!--diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认为120秒-->
- <!--timeToIdleSeconds: 设定允许对象处于空闲状态的最长时间,以秒为单位。当对象自从最近一次被访问后,如果处于空闲状态的时间超过了timeToIdleSeconds属性 值,这个对象就会过期,EHCache将把它从缓存中清空。只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限 期地处于空闲状态-->
- <!--timeToLiveSeconds:设定对象允许存在于缓存中的最长时间,以秒为单位。当对象自从被存放到缓存中后,如果处于缓存中的时间超过了 timeToLiveSeconds属性值,这个对象就会过期,EHCache将把它从缓存中清除。只有当eternal属性为false,该属性才有 效。如果该属性值为0,则表示对象可以无限期地存在于缓存中。timeToLiveSeconds必须大于timeToIdleSeconds属性,才有 意义-->
- <!--memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。可选策略有:LRU(最近最少使用,默认策略)、FIFO(先进先出)、LFU(最少访问次数)。-->
- <!-- 设定缓存的默认数据过期策略 -->
- <defaultCache
- maxElementsInMemory="10000"
- eternal="false"
- overflowToDisk="true"
- timeToIdleSeconds="10"
- timeToLiveSeconds="20"
- diskPersistent="false"
- diskExpiryThreadIntervalSeconds="120"/>
- <cache name="cache"
- maxElementsInMemory="10000"
- eternal="false"
- overflowToDisk="true"
- timeToIdleSeconds="10"
- timeToLiveSeconds="20"/>
- </ehcache>
log4j2.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
- <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
- <!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
- <configuration status="WARN" monitorInterval="30">
- <!--先定义所有的appender-->
- <appenders>
- <!--这个输出控制台的配置-->
- <console name="Console" target="SYSTEM_OUT">
- <!--输出日志的格式-->
- <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
- </console>
- <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用-->
- <File name="log" fileName="log/test.log" append="false">
- <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
- </File>
- <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
- <RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/info.log"
- filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
- <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
- <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
- <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
- <Policies>
- <TimeBasedTriggeringPolicy/>
- <SizeBasedTriggeringPolicy size="100 MB"/>
- </Policies>
- </RollingFile>
- <RollingFile name="RollingFileWarn" fileName="${sys:user.home}/logs/warn.log"
- filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
- <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
- <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
- <Policies>
- <TimeBasedTriggeringPolicy/>
- <SizeBasedTriggeringPolicy size="100 MB"/>
- </Policies>
- <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
- <DefaultRolloverStrategy max="20"/>
- </RollingFile>
- <RollingFile name="RollingFileError" fileName="${sys:user.home}/logs/error.log"
- filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
- <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
- <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
- <Policies>
- <TimeBasedTriggeringPolicy/>
- <SizeBasedTriggeringPolicy size="100 MB"/>
- </Policies>
- </RollingFile>
- </appenders>
- <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
- <loggers>
- <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
- <logger name="org.springframework" level="INFO"></logger>
- <logger name="org.hibernate" level="INFO"></logger>
- <logger name="org.mongodb.driver" level="INFO" />
- <logger name="org.mongodb.driver.cluster" level="OFF" />
- <root level="debug">
- <appender-ref ref="Console"/>
- <appender-ref ref="RollingFileInfo"/>
- <appender-ref ref="RollingFileWarn"/>
- <appender-ref ref="RollingFileError"/>
- </root>
- </loggers>
- </configuration>
config.properties
- ###---The mongodb settings---
- mongo.dbname=admin
- mongo.host=127.0.0.1
- mongo.port=27017
- mongo.connectionsPerHost=8
- mongo.threadsAllowedToBlockForConnectionMultiplier=4
- mongo.connectTimeout=1000
- mongo.maxWaitTime=1500
- mongo.autoConnectRetry=true
- mongo.socketKeepAlive=true
- mongo.socketTimeout=1500
- mongo.slaveOk=true
- mongo.writeNumber=1
- mongo.writeTimeout=0
- mongo.writeFsync=true
- ###---The redis settings---
- redis.hostName=127.0.0.1
- redis.port=6379
- redis.password=""
- redis.maxTotal=6000
- redis.maxIdle=400
- redis.minIdle=2
- redis.maxWaitMillis=1000
- redis.blockWhenExhausted=true
- redis.testOnBorrow=true
- redis.testOnReturn=true
- redis.testWhileIdle=true
- redis.timeBetweenEvictionRunsMillis=1800000
- redis.numTestsPerEvictionRun=5
- redis.timeout=100000
- defaultCacheExpireTime=60
Java Spring 后端项目搭建的更多相关文章
- Java Spring MVC项目搭建(二)——项目配置
1.站点配置文件web.xml 每一个Spring MVC 项目都必须有一个站点配置文件web.xml,他的主要功能吗....有一位大哥已经整理的很好,我借来了,大家看看: 引用博客地址: http: ...
- Java Spring MVC项目搭建(一)——Spring MVC框架集成
1.Java JDK及Tomcat安装 我这里安装的是JDK 1.8 及 Tomcat 8,安装步骤详见:http://www.cnblogs.com/eczhou/p/6285248.html 2. ...
- Java Spring MVC项目搭建(三)——“Hello World”
在Spring 的配置文件里,我们定义了一个bean ,Spring 会在启动时候会生成对象. <bean id = "helloworld" class="com ...
- Spring MVC 项目搭建 -1- 创建项目
Spring MVC 项目搭建 -1- 创建项目 1.创建 Dynamic Web project (SpringDemo),添加相关jar包 2.创建一个简单的controller类 package ...
- Spring Boot项目搭建
1.Spring Boot概述 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人 ...
- Spring boot项目搭建及简单实例
Spring boot项目搭建 Spring Boot 概述 Build Anything with Spring Boot:Spring Boot is the starting point for ...
- Spring MVC 项目搭建 -6- spring security 使用自定义Filter实现验证扩展资源验证,使用数据库进行配置
Spring MVC 项目搭建 -6- spring security使用自定义Filter实现验证扩展url验证,使用数据库进行配置 实现的主要流程 1.创建一个Filter 继承 Abstract ...
- Spring MVC 项目搭建 -5- spring security 使用数据库进行验证
Spring MVC 项目搭建 -5- spring security 使用数据库进行验证 1.创建数据表格(这里使用的是mysql) CREATE TABLE security_role ( id ...
- Spring MVC 项目搭建 -4- spring security-添加自定义登录页面
Spring MVC 项目搭建 -4- spring security-添加自定义登录页面 修改配置文件 <!--spring-sample-security.xml--> <!-- ...
随机推荐
- web 前端遇到的问题
前端小白一枚,经常遇到一些小问题,但是解决完吧,又记不住,哎,好记性不如烂笔头咯 1. 如何在js代码中设置checkbox选中? $("#select").attr('check ...
- 《Visual C++开发实战1200例 第1卷》扫描版[PDF]
[内容简介:] <Visual C++开发实战1200例(第1卷)>是“软件开发实战1200例”丛书之一.<Visual C++开发实战1200例(第1卷)>,编程实例的四库全 ...
- 第八章 高级搜索树 (xa3)红黑树:插入
- access数据库收缩(压缩)
一般是因为表中有大量没用的数据,把没用的数据全部删除 菜单栏的“工具”——“数据库实用工具”——“压缩和修复数据库” OK啦
- windows下用tcc编译Lua
脚本来源:Demon's Blog,http://demon.tw/software/compile-lua-with-tcc.html 版权归原作者所有 使用方法: 1.下载tcc编译器,本文解压目 ...
- [python] can not find app ,module
can not find module 1 startapp appname 而不是 startproject 2 不要自己创建项目根目录,要用mamage.py生成 can not find app ...
- UI设计如何做好排版?你可以学习一下格式塔原理
格式塔是一种视觉感知的理论,是研究人们视觉如何将元素组织成群体或整体,从而视觉上进行分类,在设计中,我们使用格式原理能使得我们设计更科学性,更具吸引力.通过格式塔效应,去处理设计中的点.线.面.颜色. ...
- [SoapUI] Datasink怎么显示每次循环的结果
https://www.soapui.org/reporting/the-report-datasink.html
- devexpress v14.2.3 发布
补丁而已. New Major Features in 14.2 What's New in VCL Products 14.2 Breaking Changes To learn about bre ...
- 2018.07.20 bzoj3211: 花神游历各国(线段树)
传送门 维护区间开方,区间求和.这个是线段树常规操作. 显然一个数被开方若干次之后要么是1,要么是0,所以用线段树维护区间最大和区间和,如果区间最大不超过1就剪枝剪掉,不然就继续递归直到叶节点时停下进 ...