내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
@RequiredArgsConstructor는 생성자 주입을 구현합니다.
@Autowired
그리고@Resource
주석@Autowired
@Autowired
Spring 프레임워크에서 제공하는 주석으로 종속성을 자동으로 어셈블하는 데 사용됩니다.@Autowired
private ISysUserService userService;
@Resource
@Resource
Java EE에서 제공하는 Annotation으로 Spring에서도 의존성 자동 어셈블리를 지원한다.@Resource
private ISysUserService userService;
@RequiredArgsConstructor
springboot의 개념 및 사용 @RequiredArgsConstructor-Tencent Cloud 개발자 커뮤니티-Tencent Cloud(tencent.com)
@RequiredArgsConstructor
Lombok에서 제공하는 주석으로, 모든 항목을 자동으로 생성합니다.final
필드 생성자.@RequiredArgsConstructor
@RestController
@RequestMapping("/system/user")
public class SysUserController extends BaseController {
private final ISysUserService userService;
private final ISysRoleService roleService;
private final ISysPostService postService;
private final ISysDeptService deptService;
private final ISysUserPostService userPostService;
// 构造函数由 Lombok 自动生成,注入所有 final 字段
}
@Autowired
그리고@Resource
)@RequiredArgsConstructor
이런 부담을 덜어줄 수 있습니다.@Autowired
@RestController
@RequestMapping("/system/user")
public class SysUserController extends BaseController {
@Autowired
private ISysUserService userService;
@Autowired
private ISysRoleService roleService;
@Autowired
private ISysPostService postService;
@Autowired
private ISysDeptService deptService;
@Autowired
private ISysUserPostService userPostService;
// 其他代码
}
@RequiredArgsConstructor
@RestController
@RequestMapping("/system/user")
public class SysUserController extends BaseController {
private final ISysUserService userService;
private final ISysRoleService roleService;
private final ISysPostService postService;
private final ISysDeptService deptService;
private final ISysUserPostService userPostService;
// 其他代码
}
이러한 생성자 주입 방식을 통해 코드의 견고성과 유지보수성을 향상시킬 수 있을 뿐만 아니라, Spring의 종속성 주입 기능과 Lombok의 단순화된 코드의 장점을 더욱 잘 활용할 수 있습니다.
Spring의 생성자 주입_spring 생성자 주입-CSDN 블로그
생성자 주입을 사용하는 경우 추가 주석을 추가할 필요가 없으며 생성자만 제공하면 됩니다. Spring은 생성자를 자동으로 감지하고 종속성 주입을 수행합니다.
@RestController
@RequestMapping("/system/user")
public class SysUserController extends BaseController {
private final ISysUserService userService;
private final ISysRoleService roleService;
private final ISysPostService postService;
private final ISysDeptService deptService;
private final ISysUserPostService userPostService;
// 自己编写构造函数
public SysUserController(ISysUserService userService,
ISysRoleService roleService,
ISysPostService postService,
ISysDeptService deptService,
ISysUserPostService userPostService) {
this.userService = userService;
this.roleService = roleService;
this.postService = postService;
this.deptService = deptService;
this.userPostService = userPostService;
}
}
샘플 코드
package com.example.demo.controller;
import com.example.demo.service.ISysUserService;
import com.example.demo.service.ISysRoleService;
import com.example.demo.service.ISysPostService;
import com.example.demo.service.ISysDeptService;
import com.example.demo.service.ISysUserPostService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/system/user")
public class SysUserController {
private final ISysUserService userService;
private final ISysRoleService roleService;
private final ISysPostService postService;
private final ISysDeptService deptService;
private final ISysUserPostService userPostService;
// 构造函数注入
public SysUserController(ISysUserService userService,
ISysRoleService roleService,
ISysPostService postService,
ISysDeptService deptService,
ISysUserPostService userPostService) {
this.userService = userService;
this.roleService = roleService;
this.postService = postService;
this.deptService = deptService;
this.userPostService = userPostService;
}
// 你的控制器方法
}
이 예에서는 생성자에 주석을 달기 위해 추가 주석을 사용할 필요가 없으며 Spring은 자동으로 종속성을 식별하고 주입합니다. (물론 표시하면 오류가 보고되지 않으나 @Autowired만 사용할 수 있고 @Resouce는 사용할 수 없습니다.@Resource
주석은 일반적으로 필드 또는 설정자 메서드 주입에 사용됩니다.
@Autowired
사용할 생성자를 명시적으로 지정하는 주석입니다.샘플 코드(다중 생성자)
package com.example.demo.controller;
import com.example.demo.service.ISysUserService;
import com.example.demo.service.ISysRoleService;
import com.example.demo.service.ISysPostService;
import com.example.demo.service.ISysDeptService;
import com.example.demo.service.ISysUserPostService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/system/user")
public class SysUserController {
private final ISysUserService userService;
private final ISysRoleService roleService;
private final ISysPostService postService;
private final ISysDeptService deptService;
private final ISysUserPostService userPostService;
// 使用 @Autowired 明确指定使用哪个构造函数
@Autowired
public SysUserController(ISysUserService userService,
ISysRoleService roleService,
ISysPostService postService,
ISysDeptService deptService,
ISysUserPostService userPostService) {
this.userService = userService;
this.roleService = roleService;
this.postService = postService;
this.deptService = deptService;
this.userPostService = userPostService;
}
// 另一个构造函数
public SysUserController(ISysUserService userService) {
this.userService = userService;
this.roleService = null;
this.postService = null;
this.deptService = null;
this.userPostService = null;
}
// 你的控制器方法
}
이 예에서는 생성자가 여러 개 있으므로 다음을 사용해야 합니다. @Autowired
Spring이 종속성 주입에 사용하는 생성자를 명시적으로 지정하는 주석입니다.