spring的成功配置样式

spring的自动注入功能非常强大,近年来,使用注解的方式更是让人喜悦,大大简化了代码,同时,配合 

 


  
<context:annotation-config/>  <context:component-scan base-package="com.liu.mongodb.dao"/> 

可以方便的进行自动注入!

使用注解时,需要


  
<context:component-scan base-package="com.liu.mongodb.dao"/> 

将需要注入的bean们概括,同时,在类前加@Service、@Controller、@Component等等,其他方法就可以使用作为spring容器类的bean的形式使用它,非常方便

值得注意的是,诸如在spring xml文件中配置的mongoTemplate容器,似乎不能非常优雅的在自己写的bean中自动注入,比如笔者使用了set注入,不能成功

 


  
//   @Autowired  //    public void setMongoTemplate(@Qualifier("mongoTemplate")MongoTemplate mongoTemplate) {  //        this.mongoTemplate = mongoTemplate;  //    } 

报的异常是


  
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void com.liu.mongodb.dao.SoulDao.setMongoTemplate(org.springframework.data.mongodb.core.MongoTemplate); nested exception is java.lang.NoSuchMethodError: org.springframework.core.MethodParameter.getNestedParameterType()Ljava/lang/Class; 

不太清楚原因,网上查了资料,发现是springcore版本和其他spring包不一致,这里提醒大家,要保证springcore的版本大于其他spring包,不然就会出现诸如 -报core包没有某类没有某个方法之类的错误。

使用成员变量注入却轻松的成功了   

 


  
@Autowired  private MongoTemplate mongoTemplate; 

 

以下是主要文件

Dao文件


  
import com.liu.mongodb.pojo.Soul;  import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.beans.factory.annotation.Qualifier;  import org.springframework.data.mongodb.core.MongoTemplate;  import org.springframework.stereotype.Service;    import javax.annotation.PostConstruct;  import javax.annotation.PreDestroy;  import javax.annotation.Resource;    /**  * Created by IntelliJ IDEA.  * User: liu  * Date: 12-8-6  * Time: 下午8:56  * To change this template use File | Settings | File Templates.  */  @Service("soulDao")  public class SoulDao {      @Autowired      private MongoTemplate mongoTemplate; 
  /* @Autowired      public void setMongoTemplate(@Qualifier("mongoTemplate")MongoTemplate mongoTemplate) {          this.mongoTemplate = mongoTemplate;      } */       public void saveSoul(Soul soul){          mongoTemplate.save(soul,"soul");      }  } 

Spring:

 


  
<?xml version="1.0" encoding="UTF-8"?>  <beans xmlns="http://www.springframework.org/schema/beans"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xmlns:util="http://www.springframework.org/schema/util"         xmlns:context="http://www.springframework.org/schema/context"         xsi:schemaLocation="http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans.xsd         http://www.springframework.org/schema/util         http://www.springframework.org/schema/util/spring-util-2.0.xsd   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">      <!--<util:properties id="jdbcProps" location="classpath:prop/jdbc.properties"/>-->      <util:properties id="mongodbProps" location="classpath:prop/mongodb.properties"/>      <!--<util:properties id="crawlerProps" location="classpath:prop/crawler.properties"/>-->        <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>        <bean id="mongo" class="org.springframework.data.mongodb.core.MongoFactoryBean">          <property name="host" value="#{mongodbProps['mongo_statistic.host1']}"/>          <property name="port" value="#{mongodbProps['mongo_statistic.port1']}"/>      </bean>        <bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">          <constructor-arg name="username" value="#{mongodbProps['mongo_statistic.username1']}"/>          <constructor-arg name="password" value="#{mongodbProps['mongo_statistic.password1']}"/>      </bean>        <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">          <constructor-arg name="mongo" ref="mongo"/>          <constructor-arg name="databaseName" value="#{mongodbProps['mongo_statistic.dbname1']}"/>          <constructor-arg name="userCredentials" ref="userCredentials"/>      </bean>      <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>      <context:annotation-config/>      <context:component-scan base-package="com.liu.mongodb.dao"/>  </beans> 

 

本文出自 “沐浴心情” 博客,请务必保留此出处http://lj3331.blog.51cto.com/5679179/956547

转载于:https://my.oschina.net/u/2315939/blog/548104

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值