当前位置: 首页 > wzjs >正文

微信分享接口网站开发免费私人网站建设软件

微信分享接口网站开发,免费私人网站建设软件,做网站是数据库应该放在哪里,中国优秀网站设计Spring Boot 中使用 Lombok 进行依赖注入的示例 下面我将展示 Spring Boot 中使用 Lombok 进行依赖注入的不同方式,包括构造器注入、属性注入和 setter 方法注入,以及相应的测试用例。 1. 构造器注入(推荐方式) import lombok.Req…

Spring Boot 中使用 Lombok 进行依赖注入的示例

下面我将展示 Spring Boot 中使用 Lombok 进行依赖注入的不同方式,包括构造器注入、属性注入和 setter 方法注入,以及相应的测试用例。

1. 构造器注入(推荐方式)

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;@Service
@RequiredArgsConstructor
public class UserService {private final UserRepository userRepository;private final PasswordEncoder passwordEncoder;// Lombok 会自动生成包含所有 final 字段的构造器// 相当于:// public UserService(UserRepository userRepository, PasswordEncoder passwordEncoder) {//     this.userRepository = userRepository;//     this.passwordEncoder = passwordEncoder;// }
}

2. 属性注入(不推荐,仅作演示)

import lombok.Setter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class OrderService {@Autowired@Setterprivate PaymentService paymentService;@Autowired@Setterprivate InventoryService inventoryService;
}

3. Setter 方法注入

import lombok.Setter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class ProductService {private ProductRepository productRepository;private DiscountService discountService;@Autowiredpublic void setProductRepository(ProductRepository productRepository) {this.productRepository = productRepository;}@Autowired@Setter // 也可以使用 Lombok 的 @Setter 注解public void setDiscountService(DiscountService discountService) {this.discountService = discountService;}
}

4. 测试用例示例

import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.junit.jupiter.api.extension.ExtendWith;
import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;@ExtendWith(MockitoExtension.class)
public class UserServiceTest {@Mockprivate UserRepository userRepository;@Mockprivate PasswordEncoder passwordEncoder;@InjectMocksprivate UserService userService;@Testpublic void testCreateUser() {// 准备测试数据String username = "testUser";String password = "password123";String encodedPassword = "encodedPassword123";// 定义 mock 行为when(passwordEncoder.encode(password)).thenReturn(encodedPassword);when(userRepository.save(any(User.class))).thenAnswer(invocation -> invocation.getArgument(0));// 执行测试User result = userService.createUser(username, password);// 验证结果assertNotNull(result);assertEquals(username, result.getUsername());assertEquals(encodedPassword, result.getPassword());// 验证交互verify(passwordEncoder).encode(password);verify(userRepository).save(any(User.class));}
}

5. 综合示例(使用 Lombok 和 Spring)

import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;@Controller
@RequiredArgsConstructor
@RequestMapping("/api/users")
public class UserController {private final UserService userService;private final AuditService auditService;@PostMappingpublic ResponseEntity<User> createUser(@RequestBody UserDto userDto) {User user = userService.createUser(userDto);auditService.logUserCreation(user);return ResponseEntity.ok(user);}
}

springboot 测试代码中使用构造方法

@SpringBootTest
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class Test1RepositoryTest {protected final CcProcessRepository ccProcessRepository;

其他参考: lombok.config,lombok1.8.30 测试类未生效,只生成了 @ConstructorProperties

# 阻止配置向上冒泡
#config.stopBubbling = true
# 全局同时配置两种注解(需要Lombok 1.18.16+)
# 为所有生成的构造器自动添加 @ConstructorProperties
lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Autowired
lombok.anyConstructor.addConstructorProperties = true
#lombok.copyableAnnotations += org.springframework.context.annotation.Lazy

注意事项

  1. 推荐使用构造器注入(使用 @RequiredArgsConstructor),因为:

    • 明确依赖关系
    • 方便测试
    • 不可变(final)字段
    • 符合单一职责原则
  2. 属性注入虽然简洁,但有以下缺点:

    • 隐藏依赖关系
    • 难以测试
    • 可能导致循环依赖
  3. 在测试中,使用 @Mock 创建 mock 对象,使用 @InjectMocks 让 Mockito 自动注入这些 mock 到被测试对象中。

  4. 确保项目中已正确配置 Lombok 插件(IDE 和构建工具都需要)。


文章转载自:

http://QNatufkE.txLnd.cn
http://MrqJREzL.txLnd.cn
http://I8EKNHjr.txLnd.cn
http://asHq5ftM.txLnd.cn
http://0M8ASSoE.txLnd.cn
http://thvR0qCn.txLnd.cn
http://W8a19VyI.txLnd.cn
http://IE6TmxlJ.txLnd.cn
http://IMdpIP1X.txLnd.cn
http://T80H7goj.txLnd.cn
http://KTxyZ3q2.txLnd.cn
http://tXHgzuRm.txLnd.cn
http://A0nySx7Z.txLnd.cn
http://Pn5NQGhZ.txLnd.cn
http://vR8tJMv6.txLnd.cn
http://4sm4SjD4.txLnd.cn
http://n5mnrQZC.txLnd.cn
http://dYk2LaqM.txLnd.cn
http://3uN3QEKn.txLnd.cn
http://oonH26RN.txLnd.cn
http://i1pGcq2Z.txLnd.cn
http://AxRvBTE6.txLnd.cn
http://8yu4z6J7.txLnd.cn
http://AqnCM0LP.txLnd.cn
http://Jtnjmf3E.txLnd.cn
http://Jwz73vmH.txLnd.cn
http://cLuoCQPe.txLnd.cn
http://J0TPNxxY.txLnd.cn
http://XQVOZ4t3.txLnd.cn
http://pg6cXqfp.txLnd.cn
http://www.dtcms.com/wzjs/674872.html

相关文章:

  • 福州网站设计哪家做的好二维码在线生成制作
  • 网站建设考题凯里网站开发gzklyy
  • 织梦网站上传步骤电子杂志网站建设
  • 云服务器上放多个网站沈阳大型网站制作公司
  • 自适应型网站建设玉山县住房城乡建设局网站
  • 网站建设用什么软件好东莞网站建设兼职
  • 收录网站有哪些合肥网站建设费用
  • 鹿泉网站制作公司高端网站建设方案
  • 常州发布信息的有什么网站邢台163
  • 做网站域名费向哪里交成都网站设计与制作
  • 做网站需要备注号码著名网站用什么语言做后台
  • 班级网站建设模板搜狐新闻手机网
  • 礼县住房和城乡建设局网站深圳工程建设服务网
  • 哪些网站权重高深圳外贸网站搭建
  • 十堰做网站公司可信赖的深圳网站建设
  • 网站建设费用北京网络营销推广外包平台
  • 搭建一个网站花多少钱莘庄做网站
  • wordpress建站方向策划书怎么写
  • 工地招聘网站已有网站可以做服务器吗
  • 邹带芽在成武建设局网站公司网站怎么能被百度收录
  • 深圳市富通建设工程有限公司网站深圳坪山邮政编码
  • 一个域名可以绑定几个网站深圳外贸网站设计公司
  • 企业网站用什么域名wordpress iis 404页面
  • 做适合漫画网站的图片推广排名
  • 网站建立与推广建设网站 可以用3层架构吗
  • 小米商城网站建设ssh蒙语网站开发
  • 海外网站有哪些网页首站
  • 微信公众号网站开发本地调试内网建设网站外网访问
  • 网站地图seoapp开发技术路线描述
  • 网站建设模板元素是什么wordpress404页面模板