(一)关于配置文件
2017-02-23 00:00
141 查看
最近把代码里面的Spring MVC 从3升级到4了,里面的配置也稍微改了一下,也把许多jar包都升级了。这里先简单说一下配置文件的东西。
1.app-scheduling.xml中,bean标签的local改为bean
2.quartz中,原先使用的CronTriggerBean改为CronTriggerFactoryBean(原谅我不知道哪个版本升级的,CronTriggerBean已经不建议使用)
3.spring-servlet.xml中,以前的fastjson也升级了一下,features也不建议使用了。
关于升级的差不多了,接下来就是对于一些Spring 配置applicationContext.xml的说明。
这一行引入一个配置文件,目前的设计是,基本上除了定时器设置的变动,有可能会修改app-scheduling.xml和spring-servlet.xml文件外,其他的配置都在这个config.properties文件中了,关于这块的说明,后面再讲。
接下来是数据库模块,里面用到的数据库连接串和用户名、密码可以设置在config.properties。对于同一套代码,不同环境配置,也在后面一起讲。
这里用到2个数据源,其实配置文件里面用的是完全相同的配置,这个demoframe没有多数据源的使用,但是这样的配置是可以支持多数据源的,并且我也用在实际项目中,这里保留这些配置,不用的可以删掉。基本上思路就是2套数据库的配置,事务也是2套配置。不支持多数据源的事务管理,只能自己管理自己的事务。
关于事务AOP的配置,这里也说一下。
这里针对所有service的实现类xxximpl的方法中,凡是有tx后缀的做事务。最早配置文件是针对所有service的实现类xxximpl的方法都做事务,但是个人觉得这种方式不好,效率低,改为这种方式,在实际需要做事务处理的方法,指定规则触发事务。
后面又添加了redis的配置,redis最早采用单点配置,后来实际使用的是redis集群,就把配置改为集群式的。
这个配置使用的是单点的redis,主要用到spring-data-redis.jar里面提供的方法管理redis。
这个用的是集群式的配置。
以前这个早期框架的Spring配置文件,在这里有记录。
最后再说说web.xml文件,里面指定了首页对应的jsp。Spring里默认用.do为后缀,在demoframe中也是采用.do的后缀,如果想要去掉.do,可以按照如下配置
再修改 spring-servlet.xml ,添加一行 <mvc:default-servlet-handler/> 。
因为我在这个框架加上了一个拦截器,主要用来做超时验证的,所以有个过滤判断,符合过滤条件的请求直接跳过验证,在config.properties中,有个属性是no_fiter,比如写上no_fiter=/js/,/style/。
顺便说一下,表结构在src/main/resources/config/里,有个mysql版本的和oracle版本,由于oracle的太久了,只是简单改一下语句,因为本地的oracle也因为重装系统没了,没得测试建表语句是否有问题。
完。
1.app-scheduling.xml中,bean标签的local改为bean
<ref local="aa"/> 改为 <ref bean="aa"/>
2.quartz中,原先使用的CronTriggerBean改为CronTriggerFactoryBean(原谅我不知道哪个版本升级的,CronTriggerBean已经不建议使用)
3.spring-servlet.xml中,以前的fastjson也升级了一下,features也不建议使用了。
<mvc:message-converters register-defaults="true" > <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <property name="supportedMediaTypes" value="application/json;charset=UTF-8" /> <property name="features"> <array> <value>QuoteFieldNames</value> <value>WriteMapNullValue</value> <value>WriteNullStringAsEmpty</value> <value>WriteNullListAsEmpty</value> </array> </property> </bean> </mvc:message-converters> 改为 <mvc:message-converters register-defaults="true" > <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <property name="supportedMediaTypes" value="application/json;charset=UTF-8" /> <property name="fastJsonConfig"> <bean class="com.alibaba.fastjson.support.config.FastJsonConfig"> <property name="serializerFeatures"> <array value-type="com.alibaba.fastjson.serializer.SerializerFeature"> <value>QuoteFieldNames</value> <value>WriteMapNullValue</value> <value>WriteNullStringAsEmpty</value> <value>WriteNullListAsEmpty</value> </array> </property> </bean> </property> </bean> </mvc:message-converters>
关于升级的差不多了,接下来就是对于一些Spring 配置applicationContext.xml的说明。
<context:property-placeholder location="classpath:config.properties"/>
这一行引入一个配置文件,目前的设计是,基本上除了定时器设置的变动,有可能会修改app-scheduling.xml和spring-servlet.xml文件外,其他的配置都在这个config.properties文件中了,关于这块的说明,后面再讲。
接下来是数据库模块,里面用到的数据库连接串和用户名、密码可以设置在config.properties。对于同一套代码,不同环境配置,也在后面一起讲。
这里用到2个数据源,其实配置文件里面用的是完全相同的配置,这个demoframe没有多数据源的使用,但是这样的配置是可以支持多数据源的,并且我也用在实际项目中,这里保留这些配置,不用的可以删掉。基本上思路就是2套数据库的配置,事务也是2套配置。不支持多数据源的事务管理,只能自己管理自己的事务。
关于事务AOP的配置,这里也说一下。
<aop:config proxy-target-class="true"> <!-- 适配切入点(service)和事务的通知 --> <aop:advisor pointcut="execution(* *..service..impl..*.*tx(..))" advice-ref="txAdvice_service" /> </aop:config>
这里针对所有service的实现类xxximpl的方法中,凡是有tx后缀的做事务。最早配置文件是针对所有service的实现类xxximpl的方法都做事务,但是个人觉得这种方式不好,效率低,改为这种方式,在实际需要做事务处理的方法,指定规则触发事务。
/** * 比如在MenuinfoServiceImpl.java中,添加需要用事务,实际demoframe没用到事务 */ public void addMenuInfos_tx(List<MenuInfo> list) { // xxxx }
后面又添加了redis的配置,redis最早采用单点配置,后来实际使用的是redis集群,就把配置改为集群式的。
<bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
这个配置使用的是单点的redis,主要用到spring-data-redis.jar里面提供的方法管理redis。
<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
这个用的是集群式的配置。
以前这个早期框架的Spring配置文件,在这里有记录。
最后再说说web.xml文件,里面指定了首页对应的jsp。Spring里默认用.do为后缀,在demoframe中也是采用.do的后缀,如果想要去掉.do,可以按照如下配置
<servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
再修改 spring-servlet.xml ,添加一行 <mvc:default-servlet-handler/> 。
因为我在这个框架加上了一个拦截器,主要用来做超时验证的,所以有个过滤判断,符合过滤条件的请求直接跳过验证,在config.properties中,有个属性是no_fiter,比如写上no_fiter=/js/,/style/。
顺便说一下,表结构在src/main/resources/config/里,有个mysql版本的和oracle版本,由于oracle的太久了,只是简单改一下语句,因为本地的oracle也因为重装系统没了,没得测试建表语句是否有问题。
完。
相关文章推荐
- 关于IoC、低耦合、配置文件及其本质意义的思考
- 关于hibernate映射继承关系时独立的子类配置文件的问题
- 综合应用WPF/WCF/WF/LINQ之十六:关于更改XBAP程序的配置文件的问题
- 关于idl文件的settings配置信息的问题
- 关于如何在BizTalk中为项目创建单独的配置文件[翻译]
- 关于程序集配置文件(App.config)的问题
- 关于读写配置文件MBean实现结构的调整
- 关于不使用漫游配置文件解决方案保持登陆域后保持原来的配置文件不变
- 关于配置文件的访问次序
- 关于spring的配置文件的分模块策略
- 关于hibernate与spring的结合使用中的配置文件
- 关于Liferay的配置文件 —— 基于Struts开发Portlet
- Linux中关于重要配置文件
- 关于Ubuntu播放rmvb等各类视频文件的配置
- spring与hibernate集成--关于配置文件的最优化使用
- 关于Assembly.CreateInstance中被启动对象读取配置文件的问题
- (转载)关于asp.net的配置文件说明。
- Hibernate配置文件中关于discriminator 的一点解释
- 关于ssh 配置文件的参数说明
- 关于Linux系统下网卡手写配置文件的介绍