[英]Spring: injecting @RequestBody into @Bean
我想在我的控制器update(...)
執行/執行之前填充requestScopedBean.userDetails
。
在我的春季網絡項目中,我有基於Java的MyConfiguration extends WebMvcConfigurerAdapter
,我在其中:
@Bean(name = "requestScopedBean")
@Scope(value = "prototype")
public RequestScopedBean requestScopedBean() {
return new RequestScopedBean();
}
在RequestScopedBean.java
:
public class RequestScopedBean {
public @Autowired UserDetails userDetails;
public void setUserDetails(UserDetails pUserDetails){
userDetails = pUserDetails;
}
@Override
public String toString() {
return "" + (userDetails != null) ;
}
}
和UserDetails.java
public class UserDetails {
private Long id;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
我有UsersController.java
包含:
@RestController
@RequestMapping("/users")
@Scope("request")
public class UsersController {
@Autowired
private RequestScopedBean requestScopedBean;
@RequestMapping(
value = {"{uid}" },
method = RequestMethod.PUT,
produces = MediaType.APPLICATION_JSON_UTF8_VALUE
)
public ResponseEntity<?> update(
@PathVariable String uid,
@RequestBody UserDetails pUserDetails
) throws Exception {
// LOCATION 1
// return ResponseEntity;
}
}
我能做什么,在LOCATION 1
, requestScopedBean.userDetails
保存在此函數中接收的變量pUserDetails
作為參數。
我正在尋找一些基於setter的依賴注入或一些基於工廠方法的注入,但請告知其他方法是否更合適。 謝謝
如果您只想保留來自Request的UserDetails對象,只需將對象設置為requestScopedBean即可。
@RestController
@RequestMapping("/users")
@Scope("request")
public class UsersController {
@Autowired
private RequestScopedBean requestScopedBean;
@RequestMapping(
value = {"{uid}" },
method = RequestMethod.PUT,
produces = MediaType.APPLICATION_JSON_UTF8_VALUE
)
public ResponseEntity<?> update(
@PathVariable String uid,
@RequestBody UserDetails pUserDetails
) throws Exception {
requestScopedBean.setUserDetails(pUserDetails);
// return ResponseEntity;
}
}
除此之外,我建議您不要在RequestScopedBean中的UserDetails對象中使用Autowire
public class RequestScopedBean {
public UserDetails userDetails;
public void setUserDetails(UserDetails pUserDetails){
userDetails = pUserDetails;
}
@Override
public String toString() {
return "" + (userDetails != null) ;
}
}
請告訴我,您使用此方法遇到的問題是什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.