10

私はこのチュートリアルをオンラインで手紙に従っています。 http://www.tutorialspoint.com/spring/spring_bean_life_cycle.htm

しかし、次の行に到達すると、Eclipseを使用するとエラーが発生します。context.registerShutdownHook();

Eclipseによると:

"この行に複数のマーカー-構文エラー、"AssignmentOperator式"を挿入して代入を完了-構文エラー、";"を挿入してステートメントを完了-メソッドregisterShutdownHook()はタイプApplicationContextに対して未定義です"

私はこのチュートリアルに正確に従っています。私の変数名はすべてまったく同じです。私のコードは彼とまったく同じです。何が悪いのかわかりません。

何が間違っているのか、チュートリアルを続行できるようにこれを修正するために何ができるのか。

package com.tutorialspoint;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApp
{
    public static void main(String[] args)
    {
        AbstractApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");

        HelloWorld obj = (HelloWorld)context.getBean("helloWorld");
        obj.getMessage();
        context.registerShutdownHook();
    }
}
4

6 に答える 6

23

エラーの場合、コンテキストはのオブジェクトであるように見えますがApplicationContext、チュートリアルでは、のオブジェクトである必要がありますAbstractApplicationContext

あなたがこれを書いたと思います

public class MainApp {
   public static void main(String[] args) {

      ApplicationContext context = 
                          new ClassPathXmlApplicationContext("Beans.xml");//error here

      HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
      obj.getMessage();
      context.registerShutdownHook();
   }
}
于 2012-11-13T18:55:01.480 に答える
2

Springのドキュメントhttp://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-natureによると、ApplicationContextの代わりにAbstractApplicationContextを使用する必要があります。

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public final class Boot {

 public static void main(final String[] args) throws Exception {
  AbstractApplicationContext ctx
      = new ClassPathXmlApplicationContext(new String []{"beans.xml"});

  // add a shutdown hook for the above context... 
  ctx.registerShutdownHook();

  // app runs here...

  // main method exits, hook is called prior to the app shutting down...
 }
}
于 2014-04-04T06:16:23.253 に答える
1

私も同じ問題を抱えています。私はこの方法を使用してそれを解決しました。

public static void main(String[] args) {
    ApplicationContext context = new ClassPathXmlApplicationContext("Bean.xml");
    HelloWorld obj =(HelloWorld)context.getBean("helloWorld");
    obj.getMessage();
    ((AbstractApplicationContext) context).registerShutdownHook();
}
于 2018-02-01T07:41:59.400 に答える
0

これが私のために働いたコードです。

package arjun;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;

public class Main {

    public static void main(String[] args) {

                AbstractApplicationContext context= new ClassPathXmlApplicationContext("spring.xml");
                context.registerShutdownHook();
                Triangle triangle=(Triangle) context.getBean("triangle");
                triangle.draw();
    }

}
于 2014-04-09T19:44:47.470 に答える
0

//この行を使用します

((AbstractApplicationContext)ctx).registerShutdownHook();

于 2015-02-25T19:37:50.020 に答える
0

更新されたソリューションは次のとおりです。

import org.springframework.context.support.AbstractApplicationContext;  

((AbstractApplicationContext) appContext).registerShutdownHook();
于 2016-06-26T04:00:53.363 に答える