在 Java 里,“Parameter 参数怎么注入”要看你具体指哪种场景。下面按常见情况给你总结一下:
@RequestParam)@GetMapping("/test")
public String test(@RequestParam("name") String name) {
return name;
}
请求:/test?name=Tom
@PathVariable)@GetMapping("/user/{id}")
public String getUser(@PathVariable("id") Long id) {
return "id=" + id;
}
请求:/user/1
@RequestBody)@PostMapping("/user")
public String addUser(@RequestBody User user) {
return user.toString();
}
前端传 JSON:
{
"name": "Tom",
"age": 18
}
@RequestHeader)@GetMapping("/header")
public String header(@RequestHeader("Authorization") String token) {
return token;
}
@CookieValue)@GetMapping("/cookie")
public String cookie(@CookieValue("sessionId") String sessionId) {
return sessionId;
}
@Service
public class UserService {
private final UserRepository repository;
public UserService(UserRepository repository) {
this.repository = repository;
}
}
@Autowired 字段注入@Service
public class UserService {
@Autowired
private UserRepository repository;
}
@Value 注入配置参数@Value("${app.name}")
private String appName;
@Select("SELECT * FROM user WHERE id = #{id}")
User findById(@Param("id") Long id);
@Query("FROM User u WHERE u.name = :name")
List<User> findByName(@Param("name") String name);
如果你想自定义参数注入规则,可以实现:
public class MyArgumentResolver implements HandlerMethodArgumentResolver
然后注册到 Spring:
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
resolvers.add(new MyArgumentResolver());
}
Controller 参数用注解注入,Bean 用 DI 注入,SQL 用
@Param注入
如果你能告诉我你用的是 Spring / Spring Boot / MyBatis / JAX-RS / 其他框架,我可以给你更精准的例子。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。