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. Emag eht htiw Em Pleh 分类: POJ 2015-06-29 18:54 10人阅读 评论(0) 收藏

    Emag eht htiw Em Pleh Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2937   Accepted: ...

  2. 深度剖析C++对象池自动回收技术实现

    http://www.tuicool.com/articles/mQBfQfN 对象池可以显著提高性能,如果一个对象的创建非常耗时或非常昂贵,频繁去创建的话会非常低效.对象池通过对象复用的方式来避免重 ...

  3. python-学习笔记之-Day5 双层装饰器 字符串格式化 python模块 递归 生成器 迭代器 序列化

    1.双层装饰器 #!/usr/bin/env python # -*- coding: utf-8 -*- # author:zml LOGIN_INFO = False IS_ADMIN = Fal ...

  4. view class source code with JAD plugin in Eclipse

    The default class viewer doesn't decompile the class file so you cannot open and check the source co ...

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

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

  6. MVC 直接把数据库的数据输出到view(太神奇了)

    @model IEnumerable<MvcApplication32.Models.UserInfo> 后台是集合类型了 ,传到前台是model了,用 IEnumerable<&g ...

  7. Java之美[从菜鸟到高手演练]之JDK动态代理的实现及原理

    Java之美[从菜鸟到高手演练]之JDK动态代理的实现及原理 JDK动态代理的实现及原理 作者:二青 邮箱:xtfggef@gmail.com     微博:http://weibo.com/xtfg ...

  8. 关于htons和htonl

    htons的功能:将一个无符号短整型数值转换为网络字节序,即大端模式(big-endian) 参数u_short hostshort: 16位无符号整数 返回值:TCP / IP网络字节顺序. hto ...

  9. afxmessagebox和messagebox

    MessageBox()是Win32API函数.后者是mfc中的全局函数.在MFC中能用MessageBox()的地方都能用AfxMessageBox(). afxmessagebox更多的时候是用于 ...

  10. Mysql压测工具mysqlslap 讲解

    在mysql5.1以后的版本:客户端带了个工具mysqlslap可以对mysql进行压力测试: 可以使用mysqlslap --help来显示使用方法: Default options are rea ...