繁体   English   中英

春季休息使冬眠项目

[英]Making hibernate project with spring-rest

我正在尝试使用hibernate创建一个简单的spring rest项目。

我已经制作了DAO和服务层。 我还已经在dispatcher-servlet中配置了bean,并在控制器类中与服务以及服务DAO会话工厂和事务中自动装配了bean。

但是我不断出错。

我还上传了一张有错误的照片。

dispatcher-servlet.xml:
<?xml version="1.0" encoding="UTF-8"?>
beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:mvc="http://www.springframework.org/schema/mvc"
   xmlns:tx="http://www.springframework.org/schema/tx"

   xsi:schemaLocation="http://www.springframework.org/schema/beans                        http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/context    http://www.springframework.org/schema/context/spring-context.xsd
      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
      http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--    <mvc:annotation-driven />  -->

<!--    <resources mapping="/resources/**" location="/resources/" />  -->

<!--JDBC ko properties-->
<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
         destroy-method="close">  
    <beans:property name="driverClassName" value="com.mysql.jdbc.Driver" />  
    <beans:property name="url"  value="jdbc:mysql://localhost:3306/student_database" />  
    <beans:property name="username" value="root" />  
    <beans:property name="password" value="" />  
</beans:bean>  

<!-- Hibernate ko SessionFactory Bean definition part -->  
<beans:bean id="hibernate5AnnotatedSessionFactory"  
         class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">  
    <beans:property name="dataSource" ref="dataSource" />  
<!--        <beans:property name="annotatedClasses">  
        <beans:list>  
            <beans:value>com.mycompany.SpringRestMaven.bean</beans:value>  
        </beans:list>  
    </beans:property>  -->
    <beans:property name="hibernateProperties">  
        <beans:props>  
            <beans:prop      key="hibernate.dialect">org.hibernate.dialect.MySQLDialect  
            </beans:prop>  
            <beans:prop key="hibernate.show_sql">true</beans:prop>  
        </beans:props>  
    </beans:property>  
</beans:bean>  

<context:component-scan base-    package="com.mycompany.SpringRestMaven.controller"/>
<tx:annotation-driven transaction-manager="transactionManager"/>  

<beans:bean id="transactionManager"      class="org.springframework.orm.hibernate4.HibernateTransactionManager">  
    <beans:property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" />  
</beans:bean>  

controller class:
package com.mycompany.SpringRestMaven.controller;
/* I have not included imports*/
@RestController
public class StudentController {

@Autowired
ServiceLayer studentService;

@RequestMapping(value = "/insert", method = RequestMethod.POST, headers =   "Accept=application/json")
public void insert(@RequestBody Student student) {
    studentService.insert(student);
}

@RequestMapping(value = "/update", method = RequestMethod.PUT, headers =  "Accept=application/json")
public void update(@RequestBody Student student) {
    studentService.update(student);
}

@RequestMapping(value = "/delete", method = RequestMethod.DELETE, headers = "Accept=application/json")
public void delete(@PathVariable("id") int id) {
    studentService.delete(id);
}

@RequestMapping(value = "/getAll", method = RequestMethod.GET, headers =  "Accept=application/json")
public List<Student> getAll() {

    List<Student> listOfStudent = studentService.getAll();
    return listOfStudent;
}

@RequestMapping(value = "/searchById/{id}", method = RequestMethod.GET,   headers = "Accept=application/json")
public Student searchById(@PathVariable int id) {
    return studentService.searchById(id);
}
}

This is my service layer implementation:

package com.mycompany.SpringRestMaven.Service;

@Service("studentService")
public class ServiceImpl implements ServiceLayer {

@Autowired StudentDAO studentDao;

@Transactional
@Override
public void insert(Student s) {
    studentDao.insert(s);
}

@Transactional
@Override
public void update(Student s) {
    studentDao.update(s);
}

@Transactional
@Override
public void delete(int id) {
    studentDao.delete(id);
}

@Transactional
@Override
public List<Student> getAll() {
    return studentDao.getAll();
}

@Transactional
@Override
public Student searchById(int id) {
    return studentDao.searchById(id);
}

}

This is my DAO implementation:

package com.mycompany.SpringRestMaven.DAO;

@Repository
public class StudentDAOImpl implements StudentDAO {

@Autowired
private SessionFactory sessionFactory;
private Session session;
private Transaction trans;

@Override
public void insert(Student s) {
    session = sessionFactory.openSession();
    trans = session.beginTransaction();
    session.save(s);
    trans.commit();
    session.close();
}

@Override
public void update(Student s) {
    session = sessionFactory.openSession();
    trans = session.beginTransaction();
    session.saveOrUpdate(s);
    trans.commit();
    session.close();
}

@Override
public void delete(int id) {
    session = sessionFactory.openSession();
    trans = session.beginTransaction();
    Student sObject = (Student) session.get(Student.class, id);
    session.delete(sObject);
    trans.commit();
    session.close();
}

@Override
public List<Student> getAll() {
    return session.createQuery("SELECT s FROM Student s").list();
}

@Override
public Student searchById(int id) {
    return (Student) session.get(Student.class, id);
}


}

我收到此错误:

屏幕截图

改变你的配置

<context:component-scan base-    package="com.mycompany.SpringRestMaven.controller"/>

<context:component-scan base-    package="com.mycompany.SpringRestMaven"/>

然后,Spring扫描SpringRestMaven包下的所有类,并从带注释的类中创建bean。

在当前配置中,Spring仅从.controller包下面扫描并创建bean。 您的ServiceLayer不在此程序包中,因此Spring找不到该类,未创建Bean且无法自动装配该字段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM