前言
日常开发中,很多地方都需要用到二维码,像是微信扫码登录、扫码支付,或者是商品信息二维码等等,本文内容主要是讲述下如何生成二维码。所有代码都贴出来了,文章尾部也有java生成二维码的demo(完整代码)的免费下载链接。
代码编写
第一步:在pom.xml文件中加入以下依赖:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.3</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.5.1</version>
</dependency>
第二步:创建一个Java Config配置文件QRCodeConfiguration.java
,以Bean的形式显示配置并注入QrConfig:
/**
* 二维码生成配置类
*
* @author shiqi
* @date 2023/11/11
*/
@Configuration
public class QRCodeConfiguration {
@Bean
public QrConfig qrConfig() {
QrConfig qrConfig = new QrConfig();
qrConfig.setBackColor(Color.white.getRGB());
qrConfig.setForeColor(Color.black.getRGB());
return qrConfig;
}
}
第三步:创建service:
/**
* 二维码生成服务
*
* @author shiqi
* @date 2023/11/11
*/
public interface QrcodeService {
/**
* 生成到本地文件
*
* @param content
* @param file
* @author shiqi
* @date 2023/11/12
*/
void generateFile(String content, File file);
/**
* 输出到流
*
* @param content
* @param response
* @throws IOException
* @author shiqi
* @date 2023/11/12
*/
void generateStream(String content, HttpServletResponse response) throws IOException;
}
第四步:创建impl实现类:
/**
* 二维码生成服务实现类
*
* @author seven
* @date 2023/11/12
*/
@Service
@RequiredArgsConstructor
public class QrcodeServiceImpl implements QrcodeService {
@Resource
QrConfig qrconig;
/**
* 生成到本地文件
*
* @param content
* @param file
* @author shiqi
* @date 2023/11/12
*/
public void generateFile(String content, File file) {
QrCodeUtil.generate(content, qrconig, file);
}
/**
* 输出到流
*
* @param content
* @param response
* @throws IOException
* @author shiqi
* @date 2023/11/12
*/
public void generateStream(String content, HttpServletResponse response) throws IOException {
QrCodeUtil.generate(content, qrconig, "png", response.getOutputStream());
}
}
第五步:创建controller:
/**
* 二维码生成控制层
*
* @author shiqi
* @date 2023/11/19
*/
@Slf4j
@RestController()
@RequestMapping("/system")
@RequiredArgsConstructor
public class QrcodeController {
private final QrcodeService qrcodeService;
@GetMapping("/getQrCode")
public void getQrCode(String code, HttpServletResponse response) throws IOException {
// 这边可以执行自己的业务逻辑,不同的逻辑给不同的入参就好了
// 比如你要生成微信支付的二维码,那你就调用微信支付官方的API获取一个字符串url
//生成二维码图片输出到流
qrcodeService.generateStream(code, response);
}
}
结果测试
浏览器输入路径进行测试:
我弄了个java生成二维码的demo,是基于springboot的,大家可以直接下载下来跑,运行起来就可以了
下载链接:java生成二维码demo