我在我的服务器Tomcat上部署project后遇到了这个错误。我发现了许多类似的问题,但我没有找到我的问题的答案。
ApplicationContext.xml
<?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:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
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/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd">
<context:property-placeholder location="classpath:config.properties" />
<context:component-scan base-package="ua.com.goit.gojava7.kikstarter.dao.database" />
<bean id="basicDataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.dataBaseUrl}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="basicDataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.show_sql">false</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>ua.com.goit.gojava7.kikstarter.domain.Quote</value>
<value>ua.com.goit.gojava7.kikstarter.domain.Category</value>
<value>ua.com.goit.gojava7.kikstarter.domain.Project</value>
<value>ua.com.goit.gojava7.kikstarter.domain.Payment</value>
<value>ua.com.goit.gojava7.kikstarter.domain.Reward</value>
</list>
</property>
</bean>
CategoryDaoDbImpl类
package ua.com.goit.gojava7.kikstarter.dao.database;
import java.util.List;
import org.hibernate.SessionFactory;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.hibernate.Criteria;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import ua.com.goit.gojava7.kikstarter.dao.CategoryDao;
import ua.com.goit.gojava7.kikstarter.domain.Category;
@Repository
public class CategoryDaoDbImpl implements CategoryDao {
@Autowired
private SessionFactory sessionFactory;
@SuppressWarnings("unchecked")
@Transactional
@Override
public List<Category> getAll() {
Session session=sessionFactory.openSession();
Criteria criteria=session.createCriteria(Category.class);
List<Category> categories=criteria.list();
session.close();
return categories;
}
@Transactional
@Override
public Category getCategory(int id) {
Session session=sessionFactory.openSession();
Criteria criteria=session.createCriteria(Category.class);
criteria.add(Restrictions.eq("id", id));
Category category=(Category) criteria.uniqueResult();
session.close();
return category;
}
}
Category类
package ua.com.goit.gojava7.kikstarter.domain;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@Table(name = "categories")
public class Category {
@Id
@SequenceGenerator(name = "SEQ_GEN", sequenceName = "seq_id", allocationSize = 10)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_GEN")
private int id;
@Column(name = "name")
private String name;
@OneToMany
private Set<Project> projects;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public Set<Project> getProjects() {
return projects;
}
public void setProjects(Set<Project> projects) {
this.projects = projects;
}
@Override
public String toString() {
return "ID: " + id + "; Name: " + name;
}
}
package ua.com.goit.gojava7.kikstarter.domain;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@Table(name = "projects")
public class Project {
@Id
@SequenceGenerator(name = "SEQ_GEN", sequenceName = "seq_id", allocationSize = 10)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_GEN")
private int id;
@ManyToOne
@JoinColumn(name = "category_id")
private Category category;
@Column(name = "name")
private String name;
@Column(name = "general_description")
private String generalDescription;
@Column(name = "full_description")
private String fullDescription;
@Column(name = "video_link")
private String videoLink;
@Column(name = "required_sum")
private int requiredSum;
@Column(name = "collected_sum")
private int collectedSum;
@Column(name = "days_left")
private int endOfDays;
public int getId() {
return id;
}
public Category getCategory() {
return category;
}
public String getName() {
return name;
}
public String getGenerelDescription() {
return generalDescription;
}
public String getFullDescription() {
return fullDescription;
}
public String getVideoLink() {
return videoLink;
}
public int getRequiredSum() {
return requiredSum;
}
public int getCollectedSum() {
return collectedSum;
}
public int getEndOfDays() {
return endOfDays;
}
public void setId(int id) {
this.id = id;
}
public void setCategory(Category category) {
this.category = category;
}
public void setName(String projectName) {
this.name = projectName;
}
public void setGeneralDescription(String generalDescription) {
this.generalDescription = generalDescription;
}
public void setFullDescription(String fullDescription) {
this.fullDescription = fullDescription;
}
public void setVideoLink(String videoLink) {
this.videoLink = videoLink;
}
public void setRequiredSum(int requiredSum) {
this.requiredSum = requiredSum;
}
public void setCollectedSum(int collectedAmount) {
this.collectedSum = collectedAmount;
}
public void setSumFromUser(int enteredAmount) {
collectedSum += enteredAmount;
}
public void setEndOfDays(int endOfDays) {
this.endOfDays = endOfDays;
}
@Override
public String toString() {
return "Project: name: " + name + "; general description: " + generalDescription + "; full description: "
+ fullDescription + "; video link: " + videoLink + "; required sum: " + requiredSum
+ "; collected sum: " + collectedSum + "; days left: " + endOfDays;
}
}
Spring框架因大量使用链接异常而臭名昭著(我个人认为这是一个好的品质),这使得读取从框架返回的错误变得有点棘手。使它变得棘手的是,堆栈跟踪的顺序和链接异常的顺序本质上是颠倒的。
所以看着你的具体例子(并将其简化以调用出你需要注意的结构),我们看到:
BeanCreationException: Error creating bean with name 'categoryDaoDbImpl': Injection of autowired dependencies failed; **nested exception is**
|
|-> BeanCreationException: Could not autowire field: private SessionFactory CategoryDaoDbImpl.sessionFactory; **nested exception is**
|
|-> BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; **nested exception is**
|
|-> AnnotationException: @OneToOne or @ManyToOne on Payment.projectId references an unknown entity: int at
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334) at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214) at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305) at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301) at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196) at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772) at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:835) at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537) at
org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446) at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328) at
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
当您看到嵌套异常时,您正在处理链接异常。因此,您实际遇到的是一个引起问题的异常,即payment
对象上的映射问题;特别是projectID
字段。
所以当你问
Could not autowire field:private org.hibernate.sessionFactory和错误创建名为“category daodbimpl”的bean我必须在文件applicationcontext.xml中创建名为“category daodbimpl”的bean?
希望现在很清楚,您不必对“前”三个BeanCreationException
做任何事情,因为它们都是由根AnnotationException
引起的
我的类使用@service,而bean已经自动连线,所以我不明白为什么会出现这个错误。
我正在使用java配置而不是XML迁移到spring Security4.0.1。当我自动操作时,它会给出以下错误: HTTP状态500-org.springframework.beans.factory.beanCreationException:创建名为“ScopedTarget.UsersComponent”的bean时出错:注入autowired依赖项失败;嵌套异常为org.springf
我从spring-boot开始,我有一些配置问题。我无法自动操作某些服务。我得到一个BeanCreationException。 Hier是我自动执行服务的控制器: 控制台的错误: 当我从compenentscan中删除两个控制器时,我不会出现这个错误,但我需要扫描这些控制器来访问endpoint。
这是我的当前设置:ProjectRepo: ProjectService: ProjectRestController:
我试图在没有任何实现的情况下使用Spring Data JPA-Crudepository use(所有默认选项)。 我的代码有这个例外: 线程“main”组织中出现异常。springframework。豆。工厂BeanCreationException:创建名为“springJpaContactService”的bean时出错:自动连线依赖项的注入失败;嵌套的异常是org。springframe
问题内容: 我还是Spring MVC的新手,在构建测试项目时,我从Tomcat日志中得到了以下消息: 我有两个接口,分别用于用户和管理员: 这是AdminServiceImpl: 这是applicationContext.xml 请告诉我这个bean名称是什么问题,我知道这是AOP问题: 我该如何解决? 我在控制器中使用AdminServiceImpl: 问题答案: 您必须在代码中的某处像这样自