spring配置详解
1.前⾔
公司⽼项⽬的后台,均是基于spring框架搭建,其中还⽤到了log4j.jar等开源架包。在新项⽬中,则是spring和hibernate框架均有使⽤,利⽤了hibernate框架,来实现持久化,简化sql操作等。Hibernate配置⽂件可以有两种格式,⼀种是 hibernate.properties,另⼀种是l。后者稍微⽅便⼀些,当增加hbm映射⽂件的时候,可以直接在 l ⾥⾯增加,不必像 hibernate.properties 必须在初始化代码中加⼊。我们新项⽬中使⽤的是l格式。不过在本⽂中不将细述,后续有机会再补上。
公司项⽬中,中间件主要有tomcat,webshpere,WebLogic。以下,将对项⽬中spring基本配置,log4j的配置,还有中间件的相关参数配置做⼀个初步的介绍。
2.spring配置——以⽼GIS项⽬为例⼦
GISV13中的配置涉及到了SpringMVC,IOC,AOP, Quartz⽅⾯的配置。配置的实现是通过注记配置和XML配置来合作实现。这⾥,我将按照Spring的配置流程,将其他⼏个⽅⾯的配置融合其中,来进⾏全⾯解析。
2.1SpringMVC的配置
2.1.l的配置
Web程序中,当中间件启动时,中间件会⾸先读取l中的配置。在l中可以配置,过滤器,servlet映射等等。在Spring 框架中,我们主要需配置容器初始化时读取的spring容器配置⽂件的路径以及springMVC中的分发器DispatcherServlet。
在GISV13的l中,我们定义了如下内容:
InitGISConfigServlet定义了容器启动时,⾸先要运⾏这个⽅法。然后servletname为MVC的这部分便是定义了springMVC的分发器以及此servlet所对应的加载配置⽂件的路径。在l中可以配置多个这样的servlet。截图中这段xml的配置是指,当后缀名为.htm时,则触动springMVC的分发器。关于此servlet的配置在/WEB-INF/l地址下。Servlet的配置⽂件有其默认的地址,此处为显⽰表⽰。
2.1.2.servlet的配置⽂件
⾸先,在配置⽂件中需要定义springMVC的引⽤空间以及配置格式两项。
2.1.2.1配置Controller
为了⽀持注解格式,添加了如下配置:
此配置会在配置⽂件被容器加载时,扫⾯添加了注解的代码,完成MVC的相关配置。在GISV13中,运⽤了@Controller, @Service来定义控制层以及DAO中的实现层,通过@RequestMapping来进⾏URL与Controller之间的关联。
2.1.2.2配置Model和View
在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共同完成的。与容器相关的配置地址在l中已经配成,在容器启动时便会进⾏加装。这⾥我们针对利⽤了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.*包下以⼀直到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⽇志实现”提供⼀个统⼀的接⼝,它⾃⾝的⽇志功能平常弱(只有⼀个简单的),所以⼀般不会单独使⽤它。但是,⼏乎所有⽤到Log4j的项⽬⼀般也同时会⽤到commons-loggin。这样做主要是为了避免⾃⾝项⽬与Log4j绑定的太紧密。另外, “同时使⽤commons- logging和Log4j”,可以提供⼀个统⼀的⽇志接⼝,简单了操作,同时避免项⽬与某个⽇志实现系统紧密耦合,如此可以⾃动选择适当的⽇志实现系统。
3.l中配置
在l中需要配置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”,也就是⼀跳消息占⽤⼀⾏
spring ioc注解%d 输出⽇志时间点的⽇期或时间,紧跟⼀对花括号进⾏⾃定义格式
%c 输出所属的类⽬,通常就是所在类的全名
%l 精确到⾏
%x 输出对齐
3.3.5输出的路径地址
在l中,定义了项⽬名:
在log4j.properties中定义了输⼊⽇志路径:
3.4代码中使⽤
⾸先引⽤:
然后实例化:
最后使⽤:
4.中间件配置——以tomcat为例
Tomcat中我们⼀般进⾏的配置有:端⼝,回话连接数,线程数,编码格式,⽂件压缩,内存⼤⼩等。
4.l的配置
4.2 内存设置
在catalina.bat⽂件中可以增加tomcat的内存数,避免space heap问题。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论