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

运行spring应用程序时org.springframework.beans.factory.NosuchBeanDefinitionException错误

松霖
2023-03-14

我看到了其他相关问题,但对解决方案不满意。

我已经根据我的要求对上面的教程做了我自己的修改,像使用城市,国家实体而不是学生。

我的beans.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" 
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd ">

<!-- Initialization for data source -->
<bean id="dataSource" 
  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  <property name="url" value="jdbc:mysql://localhost:3306/testdb"/>
  <property name="username" value="root"/>
  <property name="password" value="password"/>
</bean>

<!-- Definition for countryJDBCTemplate bean -->
<bean id="countryJDBCTemplate" 
  class="nz.org.tcf.CountryJDBCTemplate">
  <property name="dataSource"  ref="dataSource" />    
</bean>

</beans>

和CountryJDBCTemplate.java如下所示:

package nz.org.tcf;

import java.util.List;
import javax.sql.DataSource;

import nz.org.tcf.v0_0_1.bif.dao.CountryDAO;
import nz.org.tcf.v0_0_1.bif.pojo.Country;

import org.springframework.jdbc.core.JdbcTemplate;

public class CountryJDBCTemplate implements CountryDAO {
private DataSource dataSource;
private JdbcTemplate jdbcTemplateObject;

public void setDataSource(DataSource dataSource) {
  this.dataSource = dataSource;
  this.jdbcTemplateObject = new JdbcTemplate(dataSource);}

public void create(Integer population,String district,String countrycode,String name,      Integer id) {
String SQL = "insert into Student (population,district,countrycode,name,id) values   (?,?,?,?,?)";

jdbcTemplateObject.update( SQL, population,district,countrycode,name,id);
System.out.println("Created Record Name = " + name + " Countrycode = " + countrycode);
return;}

public Country getCountry(Integer id) {
String SQL = "select * from Student where id = ?";
Country country = jdbcTemplateObject.queryForObject(SQL, 
                    new Object[]{id}, new CountryMapper());
return country;}

public List<Country> listCountries() {
String SQL = "select * from city";
List <Country> countries = jdbcTemplateObject.query(SQL, 
                            new CountryMapper());
return countries;}

public void delete(Integer id){
String SQL = "delete from city where id = ?";
jdbcTemplateObject.update(SQL, id);
System.out.println("Deleted Record with ID = " + id );
return;}

public void update(Integer id, Integer population){
String SQL = "update city set population = ? where id = ?";
jdbcTemplateObject.update(SQL, population, id);
System.out.println("Updated Record with ID = " + id );
 return;
}}

2013年12月11日下午1:06:02 org.springframework.context.support.classpathxmlapplicationcontext准备refresh信息:刷新org.springframework.context.support.classpathxmlapplicationcontext@1c7865b:启动日期[Wed Dec 11 13:06:02 IST 2013];上下文层次结构的根2013年12月11日1:06:02 PM org.springframework.beans.factory.XML.xmlbeandefinitionReader loadBeanDefinitions信息:从类路径资源[beans.XML]中加载XML bean定义2013年12月11日1:06:03 PM org.springframework.beans.factory.support.defaultListablebeanFactory preinstantiating singletons信息:在工厂层次结构的根2013年12月11日1:06:03 PM org.springframework.JDBC.datasourc.driverManagerDataSource setDriverClassName信息:线程“main”org.springframework.beans.factory.nosuchbeanDefinitionException:在org.springframework.beans.factory.support.abstractBeanFactory.default.jdriverLocalBeanDefinition中没有名为'countryJDBCtemplate'的bean定义beanfactory.java:1114)在org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:279)在org.springframework.beans.factory.support.abstractbeanfactory.java:279)在org.springframework.beans.factory.support.abstractbeanfactory.getbean(

MainApp.java如下所示:

public class MainApp {
public static void main(String[] args) {
   System.out.println("In Main...");
  ApplicationContext context = 
         new ClassPathXmlApplicationContext("Beans.xml");     
  CountryJDBCTemplate CountryJDBCTemplate = 
  (CountryJDBCTemplate)context.getBean("CountryJDBCTemplate");

     System.out.println("------Listing Multiple Records--------" );
  List<Country> Countrys = CountryJDBCTemplate.listCountries();
  for (Country record : Countrys) {
     System.out.print("ID : " + record.getId() );
     System.out.print(", Name : " + record.getName() );

  }

  System.out.println("----Updating Record with ID = 2 -----" );
  CountryJDBCTemplate.update(2, 20);

  System.out.println("----Listing Record with ID = 2 -----" );
  Country Country = CountryJDBCTemplate.getCountry(2);
  System.out.print("ID : " + Country.getId() );
  System.out.print(", Name : " + Country.getName() );
   }
}

共有1个答案

宋烨烁
2023-03-14

在Spring上下文中,使用小写C将bean命名为CountryJDBCTemplate,但尝试使用大写C检索名为CountryJDBCTemplate的bean。

(如果可能的话,注入您的Spring beans,而不是手动查找它们,这确实更好。Spring Boot是一个新项目,它使这变得更加容易。)

 类似资料:
  • 我试图运行这里提供的这个Spring会话示例,但我使用了Maven而不是Gradle。我在a)运行WAR文件和b)在WildFly8中部署WAR时都出现以下错误。2服务器 快速搜索表明,问题可能是pom中引用的各种依赖项之间的版本冲突。xml。 根本原因是什么 运行或部署WAR时出错 这是我的完整POM。xml

  • 我是编程和学习Java的新手。 我正在尝试打包一个Java Spring Boot应用程序。当我使用命令“mvnw package”时,我得到以下错误: /watchlist/WatchlistApplicationTests由最新版本的Java运行时(类文件版本55.0)编译,该版本的Java运行时仅识别高达52.0的类文件版本 通过在线阅读,我了解到我使用旧Java版本存在问题。 文件版本55

  • 我是一名新来者,希望通过我的编辑器运行springboot项目,但我在池初始化期间不断收到一个错误

  • 如果我使用第一种方法,即使用注释我的主应用程序类,则会出现以下错误: 如果我使用第二种方法which,我仍然会得到另一个错误: 我还尝试了安迪·威尔金森的建议,并补充道 我还尝试提供用户名和pwd(不确定这是否是必需的,因为我不想访问我的数据库),但对我不起作用。如果需要,我也可以提供我的pom配置。

  • 我对Spring靴不熟悉。任何时候我运行我的Spring启动应用程序,我得到错误。需要帮助运行我的Spring启动应用程序。 错误信息:白标签错误页 此应用程序没有/error的显式映射,因此您将其视为回退。 2016年10月10日星期一10:39:54 WAT出现意外错误(类型=未找到,状态=404)。没有可用的消息 代码:

  • 这是我第一次使用Javafx与Spring Boot我有以下错误时运行我的应用程序 主课 } 控制器类 } pom.xml http://maven.apache.org/xsd/maven-4.0.0.xsd" 拜托这是怎么回事。为什么org.springframework.boot:sping-boo-maven-plugin:2.0.0。释放:运行不能被执行? 场景fxml代码 我正在用Ne