私はこの例を見ています:JavaFX 2.0でアプリケーションを構築すると、カスタムのSpringFxmlLoaderが表示されます。
import java.io.IOException;
import java.io.InputStream;
import javafx.fxml.FXMLLoader;
import org.springframework.context.ApplicationContext;
public class SpringFxmlLoader
{
private ApplicationContext context;
public SpringFxmlLoader(ApplicationContext context)
{
this.context = context;
}
public Object load(String url, Class<?> controllerClass) throws IOException
{
InputStream fxmlStream = null;
try
{
fxmlStream = controllerClass.getResourceAsStream(url);
Object instance = context.getBean(controllerClass);
FXMLLoader loader = new FXMLLoader();
loader.getNamespace().put("controller", instance);
return loader.load(fxmlStream);
}
finally
{
if (fxmlStream != null)
{
fxmlStream.close();
}
}
}
}`
特定のスプリングFXMLローダーを作成する必要があるのはなぜですか?つまり、単純なfxmlローダーを使用しても、次のようなfxmlをロードすると次のようになります。
AnchorPane page = (AnchorPane) FXMLLoader.load(TabePaneGraph.class.getResource("Sample.fxml"));
とにかくサンプルコントローラーが呼び出され、初期化は引き続き行われます。この特定のカスタムSpringFxmlLoader実装の背後にある動機を理解しようとしています。