gpt4 book ai didi

java - 在 spring mvc 中创建具有 Autowiring 功能的基本 Controller

转载 作者:行者123 更新时间:2023-12-02 10:38:04 27 4
gpt4 key购买 nike

我对 Spring 还很陌生,但没关系。我必须设置一个 spring mvc Rest 应用程序,它通过 SpringApplicationBuilder.properties() 从 javafx 应用程序获取一些数据。 (这是因为我必须实现政府的一些库,这些库实际上是皮塔饼......)。

所以我希望所有其余的 mvc Controller 都扩展 Base- 或 AppController。在此 Controller 中(在其构造函数内),我想通过

访问 SourceProperties

@Autowired
环境环境

但当我的 AppController 是静态时,它只是 null。当它是公共(public)的时,spring会抛出一个 BeanCreationException (创建名称为“appController”的bean时出错 -> 但我不知道如何处理这个问题)。

希望你能帮助我。这是我的最后一个方法...

Application.java

public static void main(String[] args) {
Login = doLogin();
Map<String, Object> p = new HashMap<String, Object>();
p.put("Server", Server);
p.put("Login", Login)";
}

AppController.java

@Controller
abstract class AppController {

@Autowired
Environment env

public Login Login;

public AppContoller() {
//Access env and read Properties-Map and "Login"
this.Login = .....;
}
}

DummyController.java

@RestController
public class dummyController extends AppController {
@RequestMapping("/greeting")
public dummy greeting(@RequestParam(value="name", defaultValue="World") String name) {
return this.Login.SessionKey;
}
}

感谢任何帮助,非常感谢。我希望我的想法很清楚。

最佳答案

您的异常堆栈跟踪:

Error creating bean with name 'appController'

不可能创建抽象类的对象。如果您希望所有 Controller 具有通用功能,您可以创建一个抽象类,然后要求每个 Controller 扩展它。

public abstract class AbstractResultController {
// some common functionality

}

请注意,AbstractResultController 上没有注释,之后:

@Controller
public class AppController extends AbstractResultController {

}

This链接将帮助您开始。

<小时/>

编辑:

创建一个如下所示的文件,以包含用 @Configuration 注释的登录详细信息

@Configuration
public abstract class Details {

@Bean(name = "login")
@Scope("singleton")
public Login getLogin() {
Login login = new Login();
// populate login object as required
return login
}
}

现在你可以在任何地方访问这个bean/对象,例如:

public static void main(String[] args) {
AnnotationConfigApplicationContext absContext = new AnnotationConfigApplicationContext(Details.class, Login.class);
Login login = (Login) absContext.getBean("login");
}

或者

@RestController
public class dummyController {

@Autowired
Login login;

// Rest of the controller logic
@RequestMapping("/greeting")
public dummy greeting(@RequestParam(value="name", defaultValue="World") String name) {
return this.login.SessionKey;
}

}

关于java - 在 spring mvc 中创建具有 Autowiring 功能的基本 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53130237/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com