在使用Springboot创建API以及理解bean的工作方式方面有点困难。
我有三门课,我尽可能简化了它们;
public class ClassA()
{
private variable neededVar;
public ClassA()
{
//initialise other variables;
}
public start()
{
/initialise neededVar;
}
@Bean
public variable getNeededVar()
{
return neededVar;
}
}
@SpringBootApplication
public class Application
{
private static ClassA myClass;
public static void main( String[] args )
{
myClass = new ClassA();
ClassA.start();
SpringApplication.run( Application.class, args );
}
}
@RestController
public class Controller
{
@Autowired
private variable neededVar;
@RequestMapping( "/temp" )
public string getVar()
{
return neededVar.toString();
}
}
我的问题是,在控制器中,我没有从创建的ClassA对象myClass中获取neededVar,实际上我不确定我得到了什么。
我也尝试过这样做,得到了类似的结果。
@SpringBootApplication
public class Application
{
private static ClassA myClass;
private static variable myNeededVar;
@Bean
public variable getNeededVar()
{
return myNeededVar;
}
public static void main( String[] args )
{
myClass = new ClassA();
myNeededVar = myClass.getNeededVar();
ClassA.start();
SpringApplication.run( Application.class, args );
}
}
如果有人能为我指出正确的方向,将neededVar从应用程序中的实例化ClassA中获取到我的rest控制器(以及随后我将创建的所有其他控制器),那将非常感谢。
谢谢
ClassA
对象并调用其start
方法。@Bean
注释用于通知Spring您要创建一个不属于Springautoscan
机制的类的对象。@Component
注释,或者它的其他变体,例如@Controller
、@Service
等。或者您应该告诉Spring如何使用@Bean
注释创建该类的对象。为了演示如何使用组件和Bean,我将把类A标记为组件,并用Bean注入变量。
@Component
public class ClassA()
{
/*
* Notice this autowired annotation. It tells spring to insert Variable object.
* What you were trying to do with getNeededVar() is done using Autowired annotation
*/
@Autowired
private Variable neededVar;
}
现在告诉spring如何为变量创建对象,因为它没有标记为组件
@SpringBootApplication
public class Application
{
public static void main( String[] args ) {
SpringApplication.run( Application.class, args );
}
// This is how you register non spring components to spring context.
// so that you can autowire them wherever needed
@Bean
public Variable variable() {
return new Variable();
}
}
您的Rest控制器代码保持原样。由于Variable
通过SpringApplication
类中的@Bean
注册到Spring,因此您并不真正需要ClassA
。您可以删除它。
@RestController
public class Controller
{
@Autowired
private Variable neededVar;
@RequestMapping( "/temp" )
public string getVar()
{
return neededVar.toString();
}
}
问题内容: 为什么无法从另一个内部访问其他控制器方法呢? 像这样。 已编译 如果您不能这样做,那为什么不呢?我还应该怎么做… 问题答案: 最近几个小时遇到相同的问题。我使用了api / services文件夹。它可能不完全是您所需要的,但是它是一个选择。
我是新手,正在尝试学习JavaFX和FXML。我的大部分应用程序逻辑都在FXMLController类中,基类几乎是空的,除了NetBeans IDE生成的基本代码,如下所示 我有一个ID为input1的元素,类型为TextField。如何通过ID访问此(或任何其他)控件?(请记住,我是控制器类而不是主类)。 我在下面找到了这个问题,这正是我要找的,但情况不同,因为它们在定义< code>scen
我试图创建一个简单的REST服务与Spring Boot遵循本教程。webapp文件夹()中的“hello world”html文件正在上打开(我创建了一个Maven-Web-App,因为我希望有一个服务的“欢迎页面”)。但是,如果我试图访问上的REST服务,我会得到一条404消息。 UserController.java: 我错过了什么?服务的URL是否错误?我在某个地方读到Spring Boo
和访问字段,如: 因为我希望有更好的方法来做到这一点。
容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables 防火墙来进行管理和实现。iptables 是 Linux 上默认的防火墙软件,在大部分发行版中都自带。 容器访问外部网络 容器要想访问外部网络,需要本地系统的转发支持。在Linux 系统中,检查转发是否打开。 $sysctl net.ipv4.ip_forwardnet.ipv4.ip_forward = 1 如果为 0,
null 我在TopMenuButtons中有一个按钮,它具有openAssisstantStage()方法,打开新的小阶段: 对于这个阶段,我还有FXML文件和控制器(AssisstantController)。只有2个按钮-第一个按钮应该打开前一个阶段和关闭电流,但第二个按钮也应该打开普雷沃阶段,关闭电流,也打开一个特定的标签在我的标签视图和做一些其他逻辑例如。获取实际localDate: 我