Java 使用Spring MVC注入自动连线依赖项失败
我正试图用SPing做一个简单的应用程序,但我不断地遇到这个错误,我不明白为什么 我什么都试过了,甚至整个应用程序都是我们写的。我甚至不知道问题出在哪里 这是我得到的错误:Java 使用Spring MVC注入自动连线依赖项失败,java,spring,spring-mvc,Java,Spring,Spring Mvc,我正试图用SPing做一个简单的应用程序,但我不断地遇到这个错误,我不明白为什么 我什么都试过了,甚至整个应用程序都是我们写的。我甚至不知道问题出在哪里 这是我得到的错误: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'blogPostController': Injection of autowired dependencies failed; nested exc
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'blogPostController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.vst.blog.service.BlogService com.vst.blog.controller.BlogPostController.blogServiceImpl; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.vst.blog.service.BlogService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1202)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4689)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5155)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1412)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1402)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.vst.blog.service.BlogService com.vst.blog.controller.BlogPostController.blogServiceImpl; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.vst.blog.service.BlogService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:561)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
... 22 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.vst.blog.service.BlogService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1301)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1047)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533)
... 24 more
Jul 14, 2020 9:46:20 PM org.springframework.web.context.ContextLoader initWebApplicationContext
SEVERE: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'blogPostController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.vst.blog.service.BlogService com.vst.blog.controller.BlogPostController.blogServiceImpl; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.vst.blog.service.BlogService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1202)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4689)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5155)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1412)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1402)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.vst.blog.service.BlogService com.vst.blog.controller.BlogPostController.blogServiceImpl; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.vst.blog.service.BlogService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:561)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
... 22 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.vst.blog.service.BlogService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1301)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1047)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533)
... 24 more
Jul 14, 2020 9:46:20 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'blogPostController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.vst.blog.service.BlogService com.vst.blog.controller.BlogPostController.blogServiceImpl; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.vst.blog.service.BlogService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1202)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4689)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5155)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1412)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1402)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.vst.blog.service.BlogService com.vst.blog.controller.BlogPostController.blogServiceImpl; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.vst.blog.service.BlogService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:561)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
... 22 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.vst.blog.service.BlogService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1301)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1047)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533)
... 24 more
下面是给出问题的类(BlogPostController)
package com.vst.blog.controller;
导入org.jboss.logging.Logger;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.stereotype.Component;
导入org.springframework.stereotype.Controller;
导入org.springframework.web.bind.annotation.ModelAttribute;
导入org.springframework.web.bind.annotation.RequestMapping;
导入org.springframework.web.bind.annotation.RequestMethod;
导入org.springframework.web.servlet.ModelAndView;
导入com.vst.blog.model.BlogPost;
导入com.vst.blog.service.BlogService;
导入java.io.IOException;
导入java.sql.SQLException;
导入java.util.List;
导入javax.servlet.http.HttpServletRequest;
@控制器
公共类BlogPostControllerImpl{
专用静态最终记录器=记录器
.getLogger(BlogPostControllerImpl.class);
@自动连线
BlogService blogServiceImpl;
BlogPostControllerImpl(){}
@RequestMapping(value=“/”,method=RequestMethod.GET)
公共模型和视图索引(){
返回新的ModelAndView(“重定向:/web inf/pages/index.jsp”);
}
@请求映射(value=“/loadPosts”)
公共模型和视图列表帖子(模型和视图模型)引发IOException{
List listPosts=blogServiceImpl.selectBlogPostS();
model.addObject(“listPosts”,listPosts);
model.setViewName(“post”);
收益模型;
}
@RequestMapping(value=“/newPost”,method=RequestMethod.GET)
公共模型和视图newPost(模型和视图模型){
BlogPost=新建BlogPost();
model.addObject(“post”,post);
model.setViewName(“post_表单”);
收益模型;
}
@RequestMapping(value=“/savePost”,method=RequestMethod.POST)
publicmodelandview savePost(@modeldattributeblogpost)引发SQLException{
如果(post.getBlog_id()==0){
blogServiceImpl.insertBlogPost(post);
}否则{
blogServiceImpl.updateBlogPost(post);
}
返回新的ModelAndView(“重定向:/loadAlbums”);
}
@RequestMapping(value=“/editPost”,method=RequestMethod.GET)
公共模型和视图编辑帖子(HttpServletRequest){
intpostid=Integer.parseInt(request.getParameter(“blog_id”);
BlogPost=blogServiceImpl.选择BlogPostById(postId);
ModelAndView模型=新的ModelAndView(“后期表单”);
model.addObject(“post”,post);
收益模型;
}
@RequestMapping(value=“/deletePost”,method=RequestMethod.GET)
公共模型和视图deletePost(HttpServletRequest请求)引发SQLException{
intpostid=Integer.parseInt(request.getParameter(“blog_id”);
blogServiceImpl.deleteBlogPost(postId);
返回新的ModelAndView(“重定向:/loadPosts”);
}
}
这是类接口
package com.vst.blog.service;
import java.sql.SQLException;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.vst.blog.model.BlogPost;
public interface BlogService {
public void insertBlogPost(BlogPost post) throws SQLException;
public BlogPost selectBlogPostById(int id);
public List<BlogPost> selectBlogPostS();
public void deleteBlogPost(int id) throws SQLException;
public void updateBlogPost(BlogPost post) throws SQLException;
}
package com.vst.blog.service;
导入java.sql.SQLException;
导入java.util.List;
导入org.springframework.stereotype.Repository;
导入com.vst.blog.model.BlogPost;
公共接口博客服务{
公共void insertBlogPost(BlogPost)抛出SQLException;
公共BlogPost selectBlogPostById(int-id);
公共列表selectBlogPostS();
public void deleteBlogPost(int-id)抛出SQLException;
公共void updateBlogPost(BlogPost)抛出SQLException;
}
以下是它的实施情况:
package com.vst.blog.service;
import java.sql.SQLException;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.vst.blog.dao.BlogPostDao;
import com.vst.blog.dao.BlogPostDaoImpl;
import com.vst.blog.dao.BlogPostDaoImpl;
import com.vst.blog.model.BlogPost;
@Service
@Transactional
public class BlogServiceImpl implements BlogService {
@Autowired
private BlogPostDao postDao;
public BlogServiceImpl () {
//postDao = new BlogPostDaoImpl();
}
public void insertBlogPost(BlogPost post) throws SQLException {
postDao.insertBlogPost(post);
}
public BlogPost selectBlogPostById(int id) {
return postDao.selectBlogPostById(id);
}
public List<BlogPost> selectBlogPostS() {
return postDao.selectBlogPostS();
}
public void deleteBlogPost(int id) throws SQLException {
postDao.deleteBlogPost(id);
}
public void updateBlogPost(BlogPost post) throws SQLException{
postDao.updateBlogPost(post);
}
}
包com.vst.blog.service;
导入java.sql.SQLException;
导入java.util.List;
导入javax.transaction.Transactional;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.stereotype.Service;
导入com.vst.blog.dao.BlogPostDao;
导入com.vst.blog.dao.BlogPostDaoImpl;
导入com.vst.blog.dao.BlogPostDaoImpl;
导入com.vst.blog.model.BlogPost;
@服务
@交易的
公共类BlogServiceImpl实现BlogService{
@自动连线
私人博客postDao postDao;
公共BlogServiceImpl(){
//postDao=新BlogPostDaoImpl();
}
public void insertBlogPost(BlogPost post)引发SQLException{
postDao.insertBlogPost(post);
}
public BlogPost selectBlogPostById(int-id){
返回postDao,选择blogpostbyid(id);
}
公共列表selectBlogPostS(){
返回postDao.selectBlogPostS();
}
public void deleteBlogPost(int-id)引发SQLException{
deleteBlogPost(id);
}
public void updateBlogPost(BlogPost)引发SQLException{
postDao.updateBlogPost(post);
}
}
这是DaoImpl
package com.vst.blog.dao;
import java.util.List;
import javax.transaction.Transactional;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import com.vst.blog.model.BlogPost;
@Service
@Transactional
public class BlogPostDaoImpl implements BlogPostDao {
public BlogPostDaoImpl () {}
@Autowired
private SessionFactory sessionFactory;
public void insertBlogPost(BlogPost post) {
sessionFactory.getCurrentSession().saveOrUpdate(post);
}
public BlogPost selectBlogPostById(int id) {
return (BlogPost) sessionFactory.getCurrentSession().get(
BlogPost.class, id);
}
@SuppressWarnings("unchecked")
public List<BlogPost> selectBlogPostS() {
return sessionFactory.getCurrentSession().createQuery("from blog")
.list();
}
public void deleteBlogPost(int id) {
BlogPost post = (BlogPost) sessionFactory.getCurrentSession().load(
BlogPost.class, id);
if (null != post) {
this.sessionFactory.getCurrentSession().delete(post);
}
}
public BlogPost updateBlogPost(BlogPost post) {
sessionFactory.getCurrentSession().update(post);
return post;
}
}
包com.vst.blog.dao;
导入java.util.List;
导入javax.transaction.Transactional;
导入org.hibernate.SessionFactory;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.stereotype.Repository;
导入org.springframework.stereotype.Service;
导入com.vst.blog.model.BlogPost;
@服务
@交易的
公共类BlogPostDaoImpl实现BlogPostDao{
公共BlogPostDaoImpl(){}
@自动连线
私人会话工厂会话工厂;
公共void insertBlogPost(BlogPost){
sessionFactory.getCurrentSession().saveOrUpdate(post);
}
public BlogPost selectBlogPostById(int-id){
return(BlogPost)sessionFactory.getCurrentSession().get(
BlogPost.class,id);
}
@抑制警告(“未选中”)
公共列表selectBlogPostS(){
返回sessionFactory.getCurrentSession().createQuery(“从博客”)
.list();
}
公共void deleteBlogPost(内部id){
BlogPost=(BlogPost
package com.vst.blog.dao;
import java.util.List;
import javax.transaction.Transactional;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import com.vst.blog.model.BlogPost;
@Service
@Transactional
public class BlogPostDaoImpl implements BlogPostDao {
public BlogPostDaoImpl () {}
@Autowired
private SessionFactory sessionFactory;
public void insertBlogPost(BlogPost post) {
sessionFactory.getCurrentSession().saveOrUpdate(post);
}
public BlogPost selectBlogPostById(int id) {
return (BlogPost) sessionFactory.getCurrentSession().get(
BlogPost.class, id);
}
@SuppressWarnings("unchecked")
public List<BlogPost> selectBlogPostS() {
return sessionFactory.getCurrentSession().createQuery("from blog")
.list();
}
public void deleteBlogPost(int id) {
BlogPost post = (BlogPost) sessionFactory.getCurrentSession().load(
BlogPost.class, id);
if (null != post) {
this.sessionFactory.getCurrentSession().delete(post);
}
}
public BlogPost updateBlogPost(BlogPost post) {
sessionFactory.getCurrentSession().update(post);
return post;
}
}
package com.vst.blog.dao;
import java.sql.SQLException;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.vst.blog.model.*;
@Repository
public interface BlogPostDao {
public void insertBlogPost(BlogPost post) throws SQLException;
public BlogPost selectBlogPostById(int id);
public List<BlogPost> selectBlogPostS();
public void deleteBlogPost(int id) throws SQLException;
public BlogPost updateBlogPost(BlogPost post) throws SQLException;
}
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc" 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/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
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- Specifying base package of the Components like Controller, Service,
DAO -->
<context:component-scan base-package="com.vst" />
<!-- Getting Database properties -->
<context:property-placeholder location="classpath:application.properties" />
<mvc:annotation-driven />
<!-- Specifying the Resource location to load JS, CSS, Images etc -->
<mvc:resources mapping="/resources/**" location="/resources/" />
<!-- View Resolver -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- DataSource -->
<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource"
id="dataSource">
<property name="driverClassName" value="${database.driver}"></property>
<property name="url" value="${database.url}"></property>
<property name="username" value="${database.user}"></property>
<property name="password" value="${database.password}"></property>
</bean>
<!-- Hibernate SessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
</props>
</property>
<property name="packagesToScan" value="com.vst.blog.model"></property>
</bean>
<!-- Transaction -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
</beans>
<context:component-scan base-package="com.VST" />
<context:component-scan base-package="com.VST.blog.service" />
<context:component-scan base-package="com.VST.blog.controller" />
<context:component-scan base-package="com.VST.blog.dao" />
BlogService blogServiceImpl;
BlogService blogService;