文章版权由做者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/。web
公司老项目的后台,均是基于spring框架搭建,其中还用到了log4j.jar等开源架包。在新项目中,则是spring和hibernate框架均有使用,利用了hibernate框架,来实现持久化,简化sql操做等。Hibernate配置文件能够有两种格式,一种是 hibernate.properties,另外一种是 hibernate.cfg.xml。后者稍微方便一些,当增长hbm映射文件的时候,能够直接在 hibernate.cfg.xml 里面增长,没必要像 hibernate.properties 必须在初始化代码中加入。咱们新项目中使用的是hibernate.cfg.xml格式。不过在本文中不将细述,后续有机会再补上。spring
公司项目中,中间件主要有tomcat,webshpere,WebLogic。如下,将对项目中spring基本配置,log4j的配置,还有中间件的相关参数配置作一个初步的介绍。sql
GISV13中的配置涉及到了SpringMVC,IOC,AOP, Quartz方面的配置。配置的实现是经过注记配置和XML配置来合做实现。这里,我将按照Spring的配置流程,将其余几个方面的配置融合其中,来进行全面解析。数据库
Web程序中,当中间件启动时,中间件会首先读取web.xml中的配置。在web.xml中能够配置监听器,过滤器,servlet映射等等。在Spring框架中,咱们主要需配置容器初始化时读取的spring容器配置文件的路径以及springMVC中的分发器DispatcherServlet。apache
在GISV13的web.xml中,咱们定义了以下内容:tomcat
InitGISConfigServlet定义了容器启动时,首先要运行这个方法。而后servletname为MVC的这部分即是定义了springMVC的分发器以及此servlet所对应的加载配置文件的路径。在web.xml中能够配置多个这样的servlet。截图中这段xml的配置是指,当后缀名为.htm时,则触动springMVC的分发器。关于此servlet的配置在/WEB-INF/classes/applicationContext-servlet.xml地址下。Servlet的配置文件有其默认的地址,此处为显示表示。app
首先,在配置文件中须要定义springMVC的引用空间以及配置格式两项。框架
为了支持注解格式,添加了以下配置:jsp
此配置会在配置文件被容器加载时,扫面添加了注解的代码,完成MVC的相关配置。在GISV13中,运用了@Controller, @Service来定义控制层以及DAO中的实现层,经过@RequestMapping来进行URL与Controller之间的关联。函数
在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还有上传下载文件等视图的支持。
在GISV13中,IOC相关的配置也是经过注解和XML共同完成的。与容器相关的配置地址在web.xml中已经配成,在容器启动时便会进行加装。这里咱们针对利用了IOC的ORM来进行讲解。
此处主要有两项:
即数据库驱动以及数据库地址。
对于不一样的数据库,spring配置数据库时会引用不一样的类,GISV13支持的数据库是Oracle,因此此处引用的类是BasicDataSource。具体配置以下:
此配置为容器启动时,实例化BasicDataSource类,property中的每个对象均为对象初始化时的属性配置,这些属性包含了驱动类型,链接地址,最大链接数等。在以前配置的jdbc.properties中的类容,可在此处直接使用。
在系统代码中,经过@Autowired,将实例化后的对象,在容器初始化时注入到注解所对应的对象中。
即可以将spring中包含了数据库配置而自动实例化好后的jdbc对象注入到注解对象中。咱们通常使用的是JdbcTemplate类,此类将数据库操做进行了浅包装,至此增删查改以及存储过程的调用等,避免了代码中屡次使用容错机制等重复代码。
AOP是Spring的一大亮点,其涉及到的概念很是多,好比切入点,加强,横切面等等。在使用验证等功能中常需使用该配置。在GISV13里也使用了此功能,主要是为了数据库事务管理而使用的。在Spring中,AOP的实现能够经过通常性XML配置,AspectJ的配置还有注解配置等来实现。结合系统,我将AspectJ的配置来大体讲解下。
此类中主要定义了事务管理所关联的数据库。DataSource的配置在上一章已描述。
此类中定义了加强的类容,即织入到目标对象(Target)代码中的内容。Attributes里定义了该加强所对应的操做。好比当方法名以find开头是,事务管理的类型为只读。事务管理的属性中还能设置传播特性,以及事物隔离性等。若是不设置,此处的转播特性为::PROPGATION_REQUIRED。这个配置项的意思是说当我调用service层的方法的时候开启一个事务(具体调用那一层的方法开始建立事务,要看aop的配置),那么在调用这个service层里面的其余的方法的时候,若是当前方法产生了事务就用当前方法产生的事务,不然就建立一个新的事务。这个工做使由Spring来帮助咱们完成的。
首先定义织入点,该配置中的意思是当在cn.com.*包下以一直到dao包中以Manager结束的类中的全部方法。
而后定义了切面,该切面首先关联了织入点,其次关联了加强类。即,在知足织入条件下的方法中加上加强的类容,该加强的类容在4.2中已经描述。
Spring3.0之后自带的task,能够将它当作一个轻量级的Quartz,并且使用起来比Quartz简单许多,可以完成任务的定时触发。
定义一个做业类。Value中为须要触发的类的引用地址。
触发条件分为两种,简单条件和复杂的条件。
能够配置触发延迟时间和触发间隔时间。其中ref为须要触发的类的配置(bean)名。
复杂配置中能够配置具体触发的时间等。
常见的支持日志的开源项目比较多,主要有:Log4j,Jul,Jcl,Slf4j,Logback等。可是,log4j以其悠久的历史,普遍的应用,支持多种语言及平台,强大的功能,占据了主导的地位。
通常须要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”,能够提供一个统一的日志接口,简单了操做,同时避免项目与某个日志实现系统紧密耦合,如此能够自动选择适当的日志实现系统。
在web.xml中须要配置log4j的配置文件地址,以及监听启动项。
Log4j中能够配置日志的输出级别,输出格式,日志路径日志名,时间格式等。
日志等级:
ERROR:虽然发生错误事件,但仍然不影响系统的继续运行。
WARN:会出现潜在错误的情形。
INFO:消息在粗粒度级别上突出强调应用程序的运行过程。
DEBUG:细粒度信息事件对调试应用程序是很是有帮助的。
其中:
org.apache.log4j.ConsoleAppender(控制台)。
org.apache.log4j.FileAppender(文件)。
org.apache.log4j.DailyRollingFileAppender(天天产生一个日志文件)。
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)。
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)。
Layout:
org.apache.log4j.HTMLLayout(以HTML表格形式布局)。
org.apache.log4j.PatternLayout(能够灵活地指定布局模式)。
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)。
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)。
Log4J采用的是相似C语言中的printf函数的打印格式格式化日志信息的
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,一般就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”,也就是一跳消息占用一行
%d 输出日志时间点的日期或时间,紧跟一对花括号进行自定义格式
%c 输出所属的类目,一般就是所在类的全名
%l 精确到行
%x 输出对齐
在web.xml中,定义了项目名:
在log4j.properties中定义了输入日志路径:
首先引用:
而后实例化:
最后使用:
Tomcat中咱们通常进行的配置有:端口,回话链接数,线程数,编码格式,文件压缩,内存大小等。
在catalina.bat文件中能够增长tomcat的内存数,避免space heap问题。
——欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/