当前位置: 首页 > 知识库问答 >
问题:

带有hibernate CRUD操作的Spring3注释:@Autowired未按预期工作

洪飞龙
2023-03-14

我目前正在使用Spring3注释和Hibernate3来实现数据库连接。我还必须使用spring Tiles。
我的spring-servlet.xml是:

    <context:annotation-config />
<context:component-scan base-package="com.xxx.controller,com.xxx.dao,com.xxx.service" />

<mvc:annotation-driven />

<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver"
    id="viewResolver">
    <property name="viewClass">
        <value>
            org.springframework.web.servlet.view.tiles2.TilesView
        </value>
    </property>
</bean>
<bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"
    id="tilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/plugin/impl/tiles/springtiles-defs.xml</value>
        </list>
    </property>
</bean>

//Is this required????
<!-- <bean id="MyDAO" class="com.xxxx.MyDAOImpl"></bean>
<bean id="MyService" class="com.xxxx.MyServiceImpl"></bean> -->

我的控制器类:

@Controller
public class myController {

    @Autowired
    private MyService myService;
    public myController() {

    }

    @RequestMapping(value="/index.do", method = RequestMethod.GET)
    protected ModelAndView Submit(HttpServletRequest request, HttpServletResponse response) throws Exception {

        // TODO Auto-generated method stubs
        System.out.println(" Inside the controller ");

</beans>

和我的serviceImpl类:

    @Service("MyService")
public class MyServiceImpl implements MyService{

@Autowired
MyDAO myDAO;

和我的DaoImpl类:

   @Repository/*("myDAO")*/
   public class MyDAOImpl implements MyDAO{

List<String> clientList;

 @Autowired
 private SessionFactory sessionFactory;

 private Session session;

 private Session currentSession() {
        return this.sessionFactory.getCurrentSession();
    }

@Override
public List<ClientInfoBean> getClientList(String currentQrt) throws DataStoreException {
    // TODO Auto-generated method stub
    return (List<ClientInfoBean>) this.currentSession().
    createCriteria("Select * from myTable);
}

它仍然给出了以下例外情况。

org.springframework.beans.factory.BeanCreationException:创建名为“MyController”的bean时出错:注入autowired依赖项失败;嵌套异常为org.springframework.beans.factory.beanCreationException:无法自动连接字段:private com.xxx.service.myservice com.xxx.controller.mycontroller.myservice;嵌套异常为org.springframework.beans.factory.noSuchBeanDefinitionException:未找到依赖项得[com.xxx.service.myservice]类型得合格bean:需要至少一个符合此依赖项自动候选条件得bean.依赖注释:{@org.springframework.beans.factory.annotation.AutoWired(required=true)}(位于org.springframework.beans.factory.annotation.AutoWiredanNotationbeanpostprocessor.PostProcessPropertyValues(AutoWiredanNotationbeanpostprocessor.java:288)(位于org.springframework.beans.factory.support.abstractautoWirecapablebeanfactory.populateBean(

原因:org.SpringFramework.Beans.Factory.BeanCreationException:无法自动连接字段:private com.xxx.service.MyService com.xxx.Controller.MyController.MyService;嵌套异常为org.springframework.beans.factory.noSuchBeanDefinitionException:未找到依赖项得[com.xxx.service.myservice]类型得合格bean:需要至少一个符合此依赖项自动候选条件得bean.依赖项批注:{@org.springframework.beans.factory.annotation.AutoWired(required=true)}(位于org.springframework.beans.factory.annotation.AutoWiredanNotationBeanPostProcessor.java:514)(位于org.springframework.beans.factory.annotation.injectionMetadata.injection(injectionMetadata.java:87)(位于

原因:org.springframework.beans.factory.noSuchBeanDefinitionException:未找到依赖项得[com.xxx.service.myservice]类型得合格bean:需要至少一个符合此依赖项自动候选条件得bean.依赖关系批注:{@org.springframework.beans.factory.annotation.AutoWired(required=true)}(位于org.springframework.beans.factory.support.defaultlistablebeanfactory.raisenosuchbeandefinitionexception(defaultlistablebeanfactory.988)(位于org.springframework.beans.factory.support.defaultlistablebeanfactory.doResolveDependency

共有1个答案

邓俊材
2023-03-14

所以问题是您的软件包:

com.xxx.servicecom.xxx.dao中有服务和DAO的定义

com.xxx.serviceimplcom.xxx.daoimpl中的实现。

同时添加

您面临的下一个问题是事务性管理:

您还没有在spring配置中定义它。这是一个如何做到这一点的例子:

<!-- Hibernate 3 Annotation SessionFactory Bean definition-->
<bean id="sessionFactory"
      class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
            <prop key="hibernate.show_sql">false</prop>
            <prop key="hibernate.jdbc.batch_size">${batchSize}</prop>
        </props>
    </property>
</bean>
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>

在此之后,您需要将方法或服务实现标记为@transactional以使spring注意这一点。

 类似资料:
  • 我正在使用请求有效负载中的对象数组调用API,我在@Request estBody中添加了@有效注释以检查是否有任何空属性在我的有效负载中发送。我希望我正在发送的任何空数据都应该抛出错误。但我的代码没有抛出错误 下面是我的实体课 这是我的控制器类 验证依赖项 我的请求有效负载 当我发送上述有效负载时,我希望抛出一个错误,因为我没有发送不为null的性别,但spring没有抛出任何错误。 我是否错过

  • 我正在使用spring Roo并希望访问Controller类中的一个bean,该类在ApplicationContext.xml中具有以下配置: 配置类本身是: 在我的Controller中,我认为一个简单的Autowired注释应该可以完成这项工作 在启动过程中,spring在setSkipWeeks方法中打印消息。不幸的是,每当我在控制器中调用config.getSkipWeeks()时,它

  • 问题内容: 我在属性文件中定义了一个属性: 然后,我有了class, 仅 当属性设置为true时, 才 应 创建一个Property Configuration bean 。 __ 这是我的课: 如果我在里面添加,只是为了进行实验并查看的值是多少,那么 确实 创建了bean , 并且我看到的值是。 如果我删除了,留下的条件作为和属性更改来自于豆,从未创建(既不也不对)。 我应该怎么做才能基于该属性

  • 问题内容: 我有一个终结点实现,即将一个对象传递给参数列表。我正在尝试使用@NotNull批注来验证该对象是否为null。 如果该对象被验证为非null,则端点将仅返回200 OK响应。但是,当我使用指定的路径向该终结点发出请求时,体内没有任何内容时,不会引发任何错误。相反,我能够检索200响应(即使我在返回响应之前检查对象是否为null,也表明是这种情况)。 有人可以指导我如何以正确的方式验证对

  • 当我运行以下程序时,它只打印 然而,从Java 8的equalsIgnoreCase文档中我们发现: 如果以下至少一项为真,则两个字符c1和c2被视为相同的忽略情况: •对每个字符应用java.lang.character.ToUpperCase(char)方法会产生相同的结果 所以我的问题是为什么这个程序不打印 在这两种操作中,都使用了大写字符。

  • 我试图使用来传输我根据前面的问题设置的自定义标头。 我在文件中读到... 我的属性包括: