您的位置:首页 > 编程语言 > Java开发

(一)关于配置文件

2017-02-23 00:00 141 查看
最近把代码里面的Spring MVC 从3升级到4了,里面的配置也稍微改了一下,也把许多jar包都升级了。这里先简单说一下配置文件的东西。

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也因为重装系统没了,没得测试建表语句是否有问题。

完。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息