在 Java 里,“Parameter 参数如何注入”通常出现在Spring 框架或方法参数注入的语境中。下面按常见场景给你系统说明。
@GetMapping("/user")
public String getUser(@RequestParam("id") int id) {
return "id=" + id;
}
/user?id=1省略写法:
@RequestParam int id
(参数名需一致)
@GetMapping("/user/{id}")
public String getUser(@PathVariable("id") int id) {
return "id=" + id;
}
URL:/user/1
@PostMapping("/user")
public String addUser(User user) {
return user.toString();
}
@PostMapping("/user")
public String addUser(@RequestBody User user) {
return user.toString();
}
@GetMapping("/header")
public String header(@RequestHeader("Authorization") String token,
@CookieValue("sessionId") String sessionId) {
return token + sessionId;
}
@Service
public class UserService {
private final UserRepository repo;
public UserService(UserRepository repo) {
this.repo = repo;
}
}
✅ Spring 自动注入构造参数
@Autowired
public void setRepo(UserRepository repo) {
this.repo = repo;
}
@Autowired
public void init(Config config, Env env) {
// 参数自动注入
}
public class CurrentUser {}
public class CurrentUserResolver implements HandlerMethodArgumentResolver {
public boolean supportsParameter(MethodParameter p) {
return p.hasParameterAnnotation(CurrentUser.class);
}
public Object resolveArgument(...) {
return SecurityUtils.getUser();
}
}
注册:
@Configuration
public class WebConfig implements WebMvcConfigurer {
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> r) {
r.add(new CurrentUserResolver());
}
}
使用:
public String info(@CurrentUser User user)
如果是反射调用方法并注入参数:
Method m = obj.getClass().getMethod("test", String.class);
m.invoke(obj, "value");
❌ 参数名丢失(编译未保留)
@RequestParam("xxx")❌ JSON 注入失败
@RequestBody✅ 构造器注入最安全、可测试
如果你指的是 某个具体框架(Spring / Spring Boot / MyBatis / JAX-RS) 或 某种 Parameter(如 SQL、注解、配置),可以直接说场景,我可以给更精确的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。