informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
@RequiredArgsConstructor mengimplementasikan injeksi konstruktor
@Autowired
Dan@Resource
anotasi@Autowired
@Autowired
Ini adalah anotasi yang disediakan oleh kerangka Spring dan digunakan untuk merakit dependensi secara otomatis.@Autowired
private ISysUserService userService;
@Resource
@Resource
Ini adalah anotasi yang disediakan oleh Java EE, dan Spring juga mendukungnya untuk perakitan dependensi secara otomatis.@Resource
private ISysUserService userService;
@RequiredArgsConstructor
@RequiredArgsConstructor
adalah anotasi yang disediakan oleh Lombok, yang secara otomatis akan menghasilkan semuafinal
Konstruktor lapangan.@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
Dan@Resource
)@RequiredArgsConstructor
Beban ini bisa diringankan.@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;
// 其他代码
}
Melalui metode injeksi konstruktor ini, tidak hanya ketahanan dan pemeliharaan kode yang dapat ditingkatkan, tetapi juga fitur injeksi ketergantungan Spring dan keunggulan kode Lombok yang disederhanakan dapat dimanfaatkan dengan lebih baik.
Blog Injeksi Konstruktor Spring_spring Injeksi Konstruktor-CSDN
Saat menggunakan injeksi konstruktor, tidak perlu menambahkan anotasi tambahan, Anda hanya perlu menyediakan konstruktornya. Spring akan secara otomatis mendeteksi konstruktor Anda dan melakukan injeksi ketergantungan.
@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;
}
}
Kode sampel
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;
}
// 你的控制器方法
}
Dalam contoh ini, tidak perlu menggunakan anotasi tambahan apa pun untuk memberi anotasi pada konstruktor, Spring akan secara otomatis mengidentifikasi dan memasukkan ketergantungan. (Tentu saja, tidak ada kesalahan yang akan dilaporkan jika ditandai, tetapi hanya @Autowired yang dapat digunakan, dan @Resouce tidak dapat digunakan.@Resource
Anotasi biasanya digunakan untuk injeksi metode bidang atau penyetel)
@Autowired
anotasi untuk secara eksplisit menentukan konstruktor mana yang akan digunakan.Kode contoh (beberapa konstruktor)
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;
}
// 你的控制器方法
}
Dalam contoh ini, karena ada banyak konstruktor, Anda perlu menggunakannya @Autowired
Anotasi untuk secara eksplisit menentukan konstruktor mana yang digunakan Spring untuk injeksi ketergantungan.