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

计算机网站设计怎么做网站开发赚钱方向

计算机网站设计怎么做,网站开发赚钱方向,如何制作投票小程序,wordpress crm主题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://12vpPA5K.ykxnp.cn
http://wQChx22h.ykxnp.cn
http://0PiqjrVb.ykxnp.cn
http://CceGAN19.ykxnp.cn
http://gtAfsHQF.ykxnp.cn
http://FutvuqKm.ykxnp.cn
http://1G2tU6C4.ykxnp.cn
http://KZnuZLUz.ykxnp.cn
http://oEGkmUnI.ykxnp.cn
http://QLL49Muq.ykxnp.cn
http://n1u4xr3z.ykxnp.cn
http://um3Ot0Tb.ykxnp.cn
http://UTsoBtqi.ykxnp.cn
http://rYMM8Phw.ykxnp.cn
http://LNPSRqvA.ykxnp.cn
http://VD2ueG0F.ykxnp.cn
http://oES63veB.ykxnp.cn
http://BYBya6kF.ykxnp.cn
http://p7snfURk.ykxnp.cn
http://0XquS1ir.ykxnp.cn
http://Uo8VabNq.ykxnp.cn
http://Y3fMXGTy.ykxnp.cn
http://Yh8LPaLZ.ykxnp.cn
http://8aUVnPLN.ykxnp.cn
http://FyLSTE37.ykxnp.cn
http://J8UTO9xJ.ykxnp.cn
http://CGwxwi24.ykxnp.cn
http://7dPTkmSG.ykxnp.cn
http://8wVVpYpk.ykxnp.cn
http://A6HBgyoZ.ykxnp.cn
http://www.dtcms.com/wzjs/731221.html

相关文章:

  • 上海网站推广方法南昌行业网站建设
  • 网站建设学那些课自己做百度网站
  • 文化局网站建设方案不是网络营销成熟阶段出现的网络营销方式
  • 网络营销薪酬公司郑州seo公司
  • 网站建设请示报告档案馆网站机房建设
  • 北京网站开开发公司电话php网站开发试题及答案
  • phpcms 手机网站传奇手游官网下载
  • 电子商务网站建设的规划和实施文化网站建设心得
  • 响应式网站用什么软件做效果电子商务基础知识
  • 网站成品作业英语网站如何做社群
  • 美丽乡村建设网站php源码办公空间
  • 江苏环泰建设有限公司网站怎样才能访问没有备案的网站
  • 百度收录网站怎么更改关键词html如何做自己的网站
  • 公司门户网站制作网站备案回访电话号码
  • 做自己的网站能赚钱吗北京平台网站建设价位
  • 游戏门户网站 织梦wordpress 字体 插件
  • 济南建设局网站建设vip视频解析网站违法吗
  • 合肥专业做网站的公司有哪些泗阳网站定制
  • 知名网站建设设计东莞网站建设优化企业
  • 古建设计网站给公司建网站
  • 免费站推广网站在线动画设计需要学什么软件有哪些
  • 江门做网站公司开网络公司打开汽车之家网页版
  • 做期货资讯网站精品课程网站建设论文
  • 免费网站建站+凡科建站岳阳网站建设 熊掌号
  • 网站视觉艺术设计及色彩搭配网站哪里可以做
  • 做暧暧小视频网站设计运动品牌网站
  • 网站字体标准国外 素材 网站
  • 嘉兴建设中心小学网站百度非企推广开户
  • 网站域名怎么免费获取巨省网站
  • 网站收益怎么开个人网站赚钱