1.前言

公司老项目的后台,均是基于spring框架搭建,其中还用到了log4j.jar等开源架包。在新项目中,则是spring和hibernate框架均有使用,利用了hibernate框架,来实现持久化,简化sql操作等。Hibernate配置文件可以有两种格式,一种是 hibernate.properties,另一种是 hibernate.cfg.xml。后者稍微方便一些,当增加hbm映射文件的时候,可以直接在 hibernate.cfg.xml 里面增加,不必像 hibernate.properties 必须在初始化代码中加入。我们新项目中使用的是hibernate.cfg.xml格式。不过在本文中不将细述,后续有机会再补上。

公司项目中,中间件主要有tomcat,webshpere,WebLogic。以下,将对项目中spring基本配置,log4j的配置,还有中间件的相关参数配置做一个初步的介绍。

2.spring配置——以老GIS项目为例子

GISV13中的配置涉及到了SpringMVC,IOC,AOP, Quartz方面的配置。配置的实现是通过注记配置和XML配置来合作实现。这里,我将按照Spring的配置流程,将其他几个方面的配置融合其中,来进行全面解析。

2.1SpringMVC的配置

2.1.1.web.xml的配置

Web程序中,当中间件启动时,中间件会首先读取web.xml中的配置。在web.xml中可以配置监听器,过滤器,servlet映射等等。在Spring框架中,我们主要需配置容器初始化时读取的spring容器配置文件的路径以及springMVC中的分发器DispatcherServlet。

在GISV13的web.xml中,我们定义了如下内容:

InitGISConfigServlet定义了容器启动时,首先要运行这个方法。然后servletname为MVC的这部分便是定义了springMVC的分发器以及此servlet所对应的加载配置文件的路径。在web.xml中可以配置多个这样的servlet。截图中这段xml的配置是指,当后缀名为.htm时,则触动springMVC的分发器。关于此servlet的配置在/WEB-INF/classes/applicationContext-servlet.xml地址下。Servlet的配置文件有其默认的地址,此处为显示表示。

2.1.2.servlet的配置文件

首先,在配置文件中需要定义springMVC的引用空间以及配置格式两项。

2.1.2.1配置Controller

为了支持注解格式,添加了如下配置:

此配置会在配置文件被容器加载时,扫面添加了注解的代码,完成MVC的相关配置。在GISV13中,运用了@Controller, @Service来定义控制层以及DAO中的实现层,通过@RequestMapping来进行URL与Controller之间的关联。

2.1.2.2配置ModelView

在SpringMVC中通过Controller返回的数据会被包装在ModelAndView这个类里。此类中包含有返回的具体数据以及返回的数据指向的URL。

在GISV13中与此相关的配置为:

此配置中为ModelAndView中的url默认添加了一个前缀,以及为url所指向的文件名后面添加了文件格式,即将返回的url转换成/home/url/file.jsp的样式。

同时此配置中也定义了视图和视图解译器:视图为org.springframework.web.servlet.view.JstlView,视图解译器为:org.springframework.web.servlet.view.InternalResourceViewResolver。

其实InternalResourceViewResolver默认的视图便是JstlView。此处不配置也可以。

视图解译器有很多种,根据不同的视图以及用途而定。SpringMVC中支持对PDF,XML还有上传下载文件等视图的支持。

2.2.IOC的配置

在GISV13中,IOC相关的配置也是通过注解和XML共同完成的。与容器相关的配置地址在web.xml中已经配成,在容器启动时便会进行加装。这里我们针对利用了IOC的ORM来进行讲解。

2.2.1.定义JDBC.properties文件

此处主要有两项:

即数据库驱动以及数据库地址。

2.2.2配置数据库连接

对于不同的数据库,spring配置数据库时会引用不同的类,GISV13支持的数据库是Oracle,所以此处引用的类是BasicDataSource。具体配置如下:

此配置为容器启动时,实例化BasicDataSource类,property中的每一个对象均为对象初始化时的属性配置,这些属性包含了驱动类型,连接地址,最大连接数等。在之前配置的jdbc.properties中的类容,可在此处直接使用。

2.2.3.使用数据库

在系统代码中,通过@Autowired,将实例化后的对象,在容器初始化时注入到注解所对应的对象中。

便可以将spring中包含了数据库配置而自动实例化好后的jdbc对象注入到注解对象中。我们一般使用的是JdbcTemplate类,此类将数据库操作进行了浅包装,至此增删查改以及存储过程的调用等,避免了代码中多次使用容错机制等重复代码。

2.3.AOP的配置

AOP是Spring的一大亮点,其涉及到的概念非常多,比如切入点,增强,横切面等等。在使用验证等功能中常需使用该配置。在GISV13里也使用了此功能,主要是为了数据库事务管理而使用的。在Spring中,AOP的实现可以通过一般性XML配置,AspectJ的配置还有注解配置等来实现。结合系统,我将AspectJ的配置来大致讲解下。

2.3.1.配置事物管理类

此类中主要定义了事务管理所关联的数据库。DataSource的配置在上一章已描述。

2.3.2配置增强类容

此类中定义了增强的类容,即织入到目标对象(Target)代码中的内容。Attributes里定义了该增强所对应的操作。比如当方法名以find开头是,事务管理的类型为只读。事务管理的属性中还能设置传播特性,以及事物隔离性等。如果不设置,此处的转播特性为::PROPGATION_REQUIRED。这个配置项的意思是说当我调用service层的方法的时候开启一个事务(具体调用那一层的方法开始创建事务,要看aop的配置),那么在调用这个service层里面的其他的方法的时候,如果当前方法产生了事务就用当前方法产生的事务,否则就创建一个新的事务。这个工作使由Spring来帮助我们完成的。

2.3.3.定义织入点和切面

首先定义织入点,该配置中的意思是当在cn.com.*包下以一直到dao包中以Manager结束的类中的所有方法。

然后定义了切面,该切面首先关联了织入点,其次关联了增强类。即,在满足织入条件下的方法中加上增强的类容,该增强的类容在4.2中已经描述。

2.4.SpringQuartz的配置

Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多,能够完成任务的定时触发。

2.4.1作业类配置

定义一个作业类。Value中为需要触发的类的引用地址。

2.4.2 触发配置

触发条件分为两种,简单条件和复杂的条件。

2.4.2.1 简单触发配置

可以配置触发延迟时间和触发间隔时间。其中ref为需要触发的类的配置(bean)名。

2.4.2.2 复杂触发配置

复杂配置中可以配置具体触发的时间等。

3.Log4j的配置

常见的支持日志的开源项目比较多,主要有:Log4j,Jul,Jcl,Slf4j,Logback等。但是,log4j以其悠久的历史,广泛的应用,支持多种语言及平台,强大的功能,占据了主导的地位。

3.1依赖的包

一般需要log4j-1.2.13.jar和commons-logging-1.1.1.jar两个架包。但是,log4j-1.2.13.jar是必须的,commons-logging-1.1.1.jar并不是必须的。

Commons-loggin的目的是为“所有的Java日志实现”提供一个统一的接口,它自身的日志功能平常弱(只有一个简单的SimpleLog), 所以一般不会单独使用它。但是,几乎所有用到Log4j的项目一般也同时会用到commons-loggin。这样做主要是为了避免自身项目与Log4j绑定的太紧密。另外, “同时使用commons- logging和Log4j”,可以提供一个统一的日志接口,简单了操作,同时避免项目与某个日志实现系统紧密耦合,如此可以自动选择适当的日志实现系统。

3.2 web.xml中配置

在web.xml中需要配置log4j的配置文件地址,以及监听启动项。

3.3 log4j.properties配置

Log4j中可以配置日志的输出级别,输出格式,日志路径日志名,时间格式等。

3.3.1日志等级

日志等级:

ERROR:虽然发生错误事件,但仍然不影响系统的继续运行。

WARN:会出现潜在错误的情形。

INFO:消息在粗粒度级别上突出强调应用程序的运行过程。

DEBUG:细粒度信息事件对调试应用程序是非常有帮助的。

3.3.2 appender配置

其中:
org.apache.log4j.ConsoleAppender(控制台)。
org.apache.log4j.FileAppender(文件)。
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)。
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)。
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)。

3.3.3 Threshold配置

Layout:
  org.apache.log4j.HTMLLayout(以HTML表格形式布局)。
  org.apache.log4j.PatternLayout(可以灵活地指定布局模式)。
  org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)。
  org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)。

3.3.4 打印格式

Log4J采用的是类似C语言中的printf函数的打印格式格式化日志信息的

%m 输出代码中指定的消息

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL

%r 输出自应用启动到输出该log信息耗费的毫秒数

%c 输出所属的类目,通常就是所在类的全名

%t 输出产生该日志事件的线程名

%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”,也就是一跳消息占用一行

%d 输出日志时间点的日期或时间,紧跟一对花括号进行自定义格式

%c 输出所属的类目,通常就是所在类的全名

%l 精确到行

%x 输出对齐

3.3.5输出的路径地址

在web.xml中,定义了项目名:

在log4j.properties中定义了输入日志路径:

3.4代码中使用

首先引用:

然后实例化:

最后使用:

4.中间件配置——tomcat为例

Tomcat中我们一般进行的配置有:端口,回话连接数,线程数,编码格式,文件压缩,内存大小等。

4.1 server.xml的配置

4.2 内存设置

在catalina.bat文件中可以增加tomcat的内存数,避免space heap问题。

spring配置详解的更多相关文章

  1. Spring之旅第三篇-Spring配置详解

    上一篇学习了IOC的概念并初步分析了实现原理,这篇主要学习Spring的配置,话不多说,让我们开始! 一.Bean元素配置 1.1 基本配置 看一个最基本的bean配置 <bean name=& ...

  2. Spring 配置详解

    spring4配置文件详解 一.配置数据源 基本的加载properties配置文件 <context:property-placeholder location="classpath* ...

  3. spring配置详解-连接池配置

    2010-08-27  一.连接池概述 数据库连接池概述: 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个 应用程序的伸缩性和 ...

  4. JAVAEE——spring01:介绍、搭建、概念、配置详解、属性注入和应用到项目

    一.spring介绍 1.三层架构中spring位置 2.spring一站式框架 正是因为spring框架性质是属于容器性质的. 容器中装什么对象就有什么功能.所以可以一站式. 不仅不排斥其他框架,还 ...

  5. spring-搭建-概念-配置详解-属性注入

    1 spring介绍  三层架构中spring位置 spring一站式框架 正是因为spring框架性质是属于容器性质的. 容器中装什么对象就有什么功能.所以可以一站式. 不仅不排斥其他框架,还能帮其 ...

  6. Spring Boot 启动(二) 配置详解

    Spring Boot 启动(二) 配置详解 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Spring Boot 配置 ...

  7. 【Spring】——声明式事务配置详解

    项目中用到了spring的事务: @Transactional(rollbackFor = Exception.class, transactionManager = "zebraTrans ...

  8. 转载 Spring、Spring MVC、MyBatis整合文件配置详解

    Spring.Spring MVC.MyBatis整合文件配置详解   使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用法最好还是看官方文档. ...

  9. spring基于通用Dao的多数据源配置详解【ds1】

    spring基于通用Dao的多数据源配置详解 有时候在一个项目中会连接多个数据库,需要在spring中配置多个数据源,最近就遇到了这个问题,由于我的项目之前是基于通用Dao的,配置的时候问题不断,这种 ...

随机推荐

  1. c# TCPclient

    服务端 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...

  2. Unity Adam特性整理

    1.Wind 小工具,一个绘制箭头Gizmos的脚本 2.TubeLight柱形光照 蛮NB的技术,实现动态柱状光照,但相机必须挂上PostProcessing 默认场景拖出来之后是这样的,然后给相机 ...

  3. hiho 第118周 网络流四·最小路径覆盖

    描述 国庆期间正是旅游和游玩的高峰期. 小Hi和小Ho的学习小组为了研究课题,决定趁此机会派出若干个调查团去沿途查看一下H市内各个景点的游客情况. H市一共有N个旅游景点(编号1..N),由M条单向游 ...

  4. Discuz! 6.x/7.x 全局变量防御绕过导致命令执行

    https://www.secpulse.com/archives/2338.html 模拟register_globals功能的代码,在GPC为off时会调用addslashes()函数处理变量值, ...

  5. 给用户添加sudo权限

    centos中默认创建的新用户是没有sudo权限的. 在文件/etc/sudoers中添加即可: ## Allow root to run any commands anywhere root ALL ...

  6. Android内存Activity泄露:Threads

    Android编程中一个共同的困难就是协调Activity的生命周期和长时间运行的任务(task),并且要避免可能的内存泄露.思考下面Activity的代码,在它启动的时候开启一个线程并循环执行任务. ...

  7. 实现Action类

    实现Action类 1.Action类的作用: (1)封装HTTP的请求参数: (2)处理用户请求: (3)封装处理结果. 2.Action类是什么,在Action类中应该包含什么: Action类就 ...

  8. 瞧,这就是UE4 C++

    1.虚幻中的类前缀你会见到U,A,F,以下就是很好的罗列其中的意义 U: UObject继承过来的,例如UTexture A: AActor继承过来的,例如AGameMode F: 其他的类和结构,例 ...

  9. DLL输入和输出函数—dllinport与dllexport

    Microsoft特殊处 dllimport和dllexport存储类修饰符是C语言的Microsoft特殊处扩充.这些修饰显式定义了DLL的客户界面(可执行的文件或另外的DLL).说明为dllexp ...

  10. 【转载】nedmalloc结构分析

    原文:nedmalloc结构分析 nedmalloc是一个跨平台的高性能多线程内存分配库,很多库都使用它,例如:OGRE.现在我们来看看nedmalloc的实现 (以WIN32部分为例)    位操作 ...