Aujourd'hui, enregistrons les problèmes que j'ai rencontrés lors de l'intégration du cadre:
1. Lorsque vous utilisez Redis pour mettre en œuvre le partage de session, le projet de démarrage du projet Aucun bean nommé «SpringSessionRepositoryFilter» est une exception définie
2. Lors de l'appel de la classe d'outils de cache, le Jedispool injecté est nul (une erreur détaillée liée à Spring Scan)
Ok, j'ai commencé à ajouter les fichiers que j'ai intégrés
pom.xml dépend du package JAR
<! - Session de printemps Begin -> <Dedency> <GroupId> redis.clients </rom grouped> <Artifactid> jedis </lefactive> <version> 2.9.0 </ version> </dependency> <dependency> <proupId> org.springFramework.Session </proupId> <Retifactive> Spring-session-data-data-redis </letifactid> <version> 1.1.1. </Dependance>
Configuration web.xml
<? xml version = "1.0" Encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" XSI: ScheMalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version = "3.0"> <FetT-Param>> <param-name> contextConfigLocation </ Param-name> <Am param-Value> ClassPath: Spring-Cfg.xml </ Param-Value> </ Context-Param> <! - Session Filter placé dans la tête de filtre -> <filter> <filter-name> springsssersepositoryFilter </filter-name> <filter-class> org.springframework.web.filter.delegatingfilterproxy </filter-class> </filter> <filter-mapping> <filter-name> springssersositoryfilter </filter-name> <url-Pattern> / * </url-Pattern> <Filter-Name> EncodingFilter </ Filter-Name> <Filter-Class> org.SpringFramework.web.Filter.CaracTerencodingFilter </ Filter-Class> <Sesync-Supported> Encoding </sync-supporté> <Am param-Value> UTF-8 </ Param-Value> </ Init-Param> </ Filter> <Imlter-Mapping> <Filter-Name> EncodingFilter </ Filter-Name> <Url-Pattern> / * </rl-dattern> </filter-Mapping> <! - Spring écouteur -> <oudurent> <ouciner-class> org.springframework.web.context.contextLoaderListener </ auteur-class> </diner> <! - Spring MVC -> <Serplet> <Servlet-Name> Springmvc </vrlet-name> <Servlet-Class> org.springframework.web.servlet.dispatcherserservlet </ Servlett-class> <InitAr-Servlet.Dispatcherservlet </ Servlett-class> <param-name> ContextConfiglocation </ param-name> <amor-Value> ClassPath: Spring-mvc.xml </onsam-Value> </nici-Param> <Offorce-on-startup> 1 </ Load-on-Startup> <sync-Supported> True </syync-support> </verplet> <sterlet-maping> <Servlet-Name> SpringMvc </ Servlet-name> <Url-Pattern> / </ url-Pattern> </ Servlet-Mapping> <! - <Servlet-Mapping> <Servlet-Name> Default </ Servlet-Name> <Url-Pattern> / static / * </ url-potern> </ servlet-mapping> -> </bouch-papping>
Fichier de configuration Spring-Cfg.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: aop = "http://www.springframework.org/schema/aop" xmlns: tx = "http://www.springframeworkwork.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsdd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/utilil http://www.springframework.org/schema/util/spring-util.xsd "> <! - Ouvrez le proxy automatique pour la programmation facet -> <aop: aspectj-autopproxy proxy-target-class =" true "/> <! <Context: Component-Scan Base-Package = "com.zyt"> <Context: Exclude-Filter Type = "Annotation" Expression = "org.SpringFramework.StereType.Controller" /> </ context: ComponentScan> <! <value> classpath: jdbc.properties </value> <value> classPath: redis.properties </value> </sist> </ propriété> </ bean> <! - Jedis Connection Pool -> <bean id = "PoolConfig"> <propriété name = "maxidle" value = "$ {redis.Maxidle}" /> <prewet name = "maxtotique" " Value = "$ {redis.maxactive}" /> <propriété name = "maxwaitmillis" value = "$ {redis.maxwait}" /> <propriété name = "testonborrow" value = "$ {redis.testonborrow}" /> </ bean> <! - redis pool pool "ne n'est pas une option requise: temps d'or <constructor-arg index = "0" ref = "poolconfig" /> <constructor-arg index = "1" value = "$ {redis.host}" /> <constructor-arg index = "2" value = "$ {redis.port}" type = "int" /> <constructor-arg index = "3" value = "$ {redis.timeout}" type = "int" / " <constructor-arg index = "4" value = "$ {redis.password}" /> </-bean> <! - Jedis Connection Factory -> <bean id = "jedisconnectionfactory"> <propriété name = "poolConfig" ref = "PoolConfig" /> <propriété name = "port" value = "$ {redis.port}" /> <propriété name = "hôte" Value = "$ {redis.host}" /> <! - <propriété name = "mot de passe" value = "$ {redis.pass}" /> -> </ank> <util: constant static-field = "org.springframework.session.data.redis.config.configurationdisaction.no_op" /> <! - Spring redis Template -> <Ebreau id = "Redistetemplate"> <propriété name = "ConnectionFactory" Ref = "JedisconnectionFactory" /> </Ean> <! - Redis end -> <! - Spring Session Begin -> <Bean Id = "RedishTTPSessionConfiguration"> <propriété name = "MaxinactiveIntervaliNecondS" Value = "1800" /> </EAND> <! id = "sqlSessionFactory"> <propriété name = "dataSource" ref = "dataSource" /> <propriété name = "mappenlocations" value = "classpath: com / zyt / ** / **. xml" /> </ bean> <ank> <propriété name = "basepackage" value = "com.zyt. *. Dao" /> <propriété name = "sqlSessionFactoryBeAnName" value = "SqlSessionFactory" /> </Ean> <! - Déclare la gestion des transactions en utilisant l'annotation -> <tx: transactionManager, dirigée par une annotation> <! id = "dataSource" destroy-méthod = "close" initi-méthod = "init"> <propriété name = "url" value = "$ {jdbc_url}" /> <propriété name = "username" value = "$ {jdbc_username}" /> <propriété name = "mot de passe" name = "initialSize" value = "0" /> <! - Nombre maximum de connexions utilisées par le pool de connexions -> <propriété name = "maxactive" value = "20" /> <propriété name = "minimum idle" value = "propriété name =" MINIDLE "value =" 0 "/> <! - Obtenez le maximum d'attente de connexion -> <propriété name =" maxwait "value =" 60000 "/> <! name = "PoolPreparedStatements" value = "true" /> <propriété name = "maxpoolPreparedStatementPerConnectionSize" value = "33" /> -> <propriété name = "ValidationQuery" value = "$ {validationQuery}" /> < name = "Test WhiteIdle" value = "true" /> <! - Configurez le temps qu'il faut pour effectuer un intervalle de détection pour détecter les connexions inactives qui doivent être fermées, en millisecondes -> <propriété name = "TimebetweenEvictionRunsmillis" Value = "60000" /> <! name = "MineVictableIdleTimemillis" Value = "25200000" /> <! - Activez la fonction de removeAbandOned -> <propriété name = "RemoveAbandOned" value = "true" /> <! - 1800 secondes, c'est-à-dire 30 minutes -> <propriété Name = "RemoveAbandonEdTimeout" Value = "1800" /> <! name = "logabandoned" value = "true" /> <! - Base de données de surveillance -> <! - <propriété name = "filters" value = "stat" /> -> <propriété name = "filters" value = "Mergestat" /> </ beans>jdbc.properties
DriverClassName = com.mysql.jdbc.Driver validationQuery = SELECT 1 jdbc_url = jdbc: mysql: // localhost: 3306 / zyt_demo? useunicode = true & caractères mous
redis.properties
redis.isopen = on redis.host = 127.0.0.1 redis.port = 6379 redis.maxidle = 300 redis.maxactive = 600 redis.maxwait = 1000 redis.testonborrow = true redis.Timeout = 2000 # redis.password = mot
Ce qui précède est le fichier de configuration intégré, où la configuration de Redis est la clé du succès de l'intégration
Résumé des questions
1. Le projet de démarrage a été signalé comme une exception après l'intégration de l'intégration en raison de l'emplacement du fichier de configuration, donc le démarrage n'a pas réussi. Essayez-le plusieurs fois. Le fichier de configuration ci-dessus peut être utilisé.
2. J'ai déjà appelé la classe d'outils de cache, et cela a montré que l'injection de Jedispool était vide. Injecté dans le contrôleur et il y avait une valeur. Parce que la façon dont j'ai appelé la classe d'outils sur le contrôleur était nouvelle, l'injection de Jedispool a donc perdu le ressort lors de la numérisation de la classe d'outils. Il peut être résolu en utilisant la classe d'outils d'injection à la place dans le contrôleur.
Par exemple:
Résumer
Ce qui précède est le processus d'intégration du printemps redis (Jedis) pour réaliser le partage de session, j'espère que cela sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!