搭建简单web项目:spring3.0基本配置

来源:互联网 发布:python读取csv文件 编辑:程序博客网 时间:2024/05/22 07:50

继续第一节的内容, 在配置完基础的spring依赖注入后, 接来下把日志和数据库配置一下.

第一部分:log4j日志, 关于log4j和spring的配置,网上已经文章大把大把的了, 就简单说一下配置过程.
虽然common-logging就可以满足大多基本的日志需求, 不过这里还是引入一下log4j的配置. spring同时还支持SLF4J, 好吧我没说听过.

spring配置log4j 
第一步:引入log4j的jar包. 写此文时最新版本已是log4j-1.2.16.jar, spring3.0附送的是log4j-1.2.15.jar.应该没什么差别.
第二步(可省):在web.xml里配置

[xhtml] view plaincopy
  1. <context-param>          
  2.  <param-name>webAppRootKey</param-name>           
  3.  <param-value>myProject.root</param-value>      
  4. </context-param>    
  5. <context-param>        
  6.  <param-name>log4jConfigLocation</param-name>        
  7.  <param-value>/WEB-INF/conf/log4j.properties</param-value>    
  8. </context-param>   
  9. <listener>        
  10.  <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>    
  11. </listener>    

这一步的作用就是让spring帮忙照料下log4j的配置文件管理,  如果跳过第二步, 这里其实就和spring没什么关系,就是单独使用log4j了. (虽然后台还有将log4j交由spring容器接管之类的,我们不用关心了.)

 

第三步: 写log4j的配置文件,  关于log4j如何配置,网上已有很多资料, 这里不细说了.
推荐一个eclipse下用log4e插件. 可以很方便的生成日志语句, 转换System.out等.

log4j.properties文件:
log4j.rootLogger= DEBUG, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

#org.apache.log4j.HTMLLayout
#org.apache.log4j.PatternLayout
#org.apache.log4j.SimpleLayout
#org.apache.log4j.TTCCLayout
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n

#log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.FILE.layout = org.apache.log4j.PatternLayout
#log4j.appender.FILE.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] - %m%n
#这里的${myProject.root}是在第二步中配置出来的. 也可以写绝对路径
#log4j.appender.FILE.File=${myProject.root}/log/sqmslog.log

#log4j.appender.FILE2 = org.apache.log4j.RollingFileAppender
#log4j.appender.FILE2.MaxFileSize = 500KB

 

log4j.logger.org.springframework=WARN   
  
log4j.logger.test=DEBUG  

 

 


第二部分: spring-jdbc 数据库配置. 

这里所需jar包为:  (关于jndi方面的jar包未测试是否已包含)
org.springframework.asm-3.0.5.RELEASE.jar
org.springframework.beans-3.0.5.RELEASE.jar
org.springframework.context-3.0.5.RELEASE.jar
org.springframework.core-3.0.5.RELEASE.jar
org.springframework.expression-3.0.5.RELEASE.jar
org.springframework.jdbc-3.0.5.RELEASE.jar
org.springframework.transaction-3.0.5.RELEASE.jar
org.springframework.web-3.0.5.RELEASE.jar
commons-logging-1.1.1.jar
commons-dbcp-1.3.jar
commons.pool-1.5.3.jar
当然,还有你要用的数据库的jdbc驱动包. 比如我这里用Mysql的mysql-connector-java-5.1.5-bin.jar

第二步: 
这里使用的是将数据库信息写在文件jdbc.properties里, 你也可以将信息直接写在dataSource的bean属性里(将第一个bean去掉),
编辑spring的配置文件:

[xhtml] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.  xsi:schemaLocation="http://www.springframework.org/schema/beans  
  5.  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  
  6.    
  7.  <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  8.   <property name="locations" value="/WEB-INF/conf/jdbc.properties"/>  
  9.  </bean>  
  10.    
  11.  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
  12.   <property name="driverClassName" value="${jdbc.driverClassName}"/>  
  13.   <property name="url" value="${jdbc.url}"/>  
  14.   <property name="username" value="${jdbc.username}"/>  
  15.   <property name="password" value="${jdbc.password}"/>  
  16.  </bean>  
  17.   
  18.  <bean id="TestBo"  
  19.   class="test.TestBo">  
  20.   <property name="dataSource" ref="dataSource"  />  
  21.  </bean>  
  22.  <!-- 省略其他 -->  
  23. </beans>  

jdbc.properties文件 :
jdbc.driverClassName=org.gjt.mm.mysql.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mysqldb?useUnicode=true
jdbc.username=root
jdbc.password=

 

 

第三步:测试, 还是使用在上一节中的测试类, TestBo

[java] view plaincopy
  1. public class TestBo {  
  2.    
  3.  private JdbcTemplate jdbcTemplate;  
  4.    
  5.  public void setDataSource(DataSource dataSource) {  
  6.   this.jdbcTemplate = new JdbcTemplate(dataSource);  
  7.  }  
  8. }  

这样就通过spring注入的dataSource在类中获得了JdbcTemplate, 这个对象基本就能帮你完成事务之外的各种数据库操作.具体操作方法这里不详述了,列出几个官方文档中给出的例子.

[java] view plaincopy
  1. //queryForInt  
  2.   int countOfActorsNamedJoe = this.jdbcTemplate.queryForInt(  
  3.   "select count(*) from t_actor where first_name = ?""Joe");  
  4.    
  5. //queryForString   
  6.  String lastName = this.jdbcTemplate.queryForObject(  
  7.     "select last_name from t_actor where id = ?",  
  8.     new Object[]{1212L}, String.class);   
  9.         
  10.  // queryForObject  
  11.  Actor actor = this.jdbcTemplate.queryForObject(  
  12.    "select first_name, last_name from t_actor where id = ?",  
  13.    new Object[]{1212L},  
  14.    new RowMapper<Actor>() {  
  15.    public Actor mapRow(ResultSet rs, int rowNum) throws SQLException {  
  16.    Actor actor = new Actor();  
  17.    actor.setFirstName(rs.getString("first_name"));  
  18.    actor.setLastName(rs.getString("last_name"));  
  19.    return actor;  
  20.    }  
  21.    });  
  22.      
  23.    
  24.  //queryForObjectList    
  25.  List<Actor> actors = this.jdbcTemplate.query(  
  26.   "select first_name, last_name from t_actor",  
  27.   new RowMapper<Actor>() {  
  28.   public Actor mapRow(ResultSet rs, int rowNum) throws SQLException {  
  29.   Actor actor = new Actor();  
  30.   actor.setFirstName(rs.getString("first_name"));  
  31.   actor.setLastName(rs.getString("last_name"));  
  32.   return actor;  
  33.   }  
  34.  });  
  35.    
  36.  //another queryForObjectList  
  37.  public List<Actor> findAllActors() {  
  38.   return this.jdbcTemplate.query( "select first_name, last_name from t_actor"new ActorMapper());  
  39.   }  
  40.  private static final class ActorMapper implements RowMapper<Actor> {  
  41.   public Actor mapRow(ResultSet rs, int rowNum) throws SQLException {  
  42.    Actor actor = new Actor();  
  43.    actor.setFirstName(rs.getString("first_name"));  
  44.    actor.setLastName(rs.getString("last_name"));  
  45.    return actor;  
  46.   }  
  47.  }  
  48.    
  49.  //update and delete  
  50.  this.jdbcTemplate.update(  
  51.   "update t_actor set = ? where id = ?",  
  52.   "Banjo", 5276L);  
  53.  )  
  54.    

 

最后附上jndi的配置xml, 可能需要引入更多的jar包.

[xhtml] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns:jee="http://www.springframework.org/schema/jee"  
  5.     xsi:schemaLocation="  
  6.     http://www.springframework.org/schema/beans  
  7.     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  8.     http://www.springframework.org/schema/jee  
  9.     http://www.springframework.org/schema/jee/spring-jee-3.0.xsd">  
  10.       
  11.     <jee:jndi-lookup id="dataSource" jndi-name="jdbc/jpetstore"/>  
  12.     <bean id="txManager" class="org.springframework.transaction.jta.JtaTransactionManager" />  
  13.     <!-- other <bean/> definitions here -->  
  14. </beans>  

0 0
原创粉丝点击