这个方法在我所有的 JUnit 测试用例中都是空的。这个方法有什么用?
Sonarqube 抱怨
“添加嵌套注释,解释为什么此方法为空,抛出 UnsupportedOperationException 或完成实现。”
我可以通过添加一些评论来绕过这个,但我只想知道为什么有必要。
如何在Jenkins管道脚本中(在Windows环境中)从工作空间获取文件的绝对路径
文件位置(从Git和Jenkinsfile2.nprd检出的文件将具有groovy管道脚本):
C:/程序文件(x86)/Jenkins/workspace/dev-my-api/my-data-api/my-data-api/pom.xml C:/程序文件(x86)/ Jenkins / workspace / dev-my -api / my-data-api / Jenkinsfile2.nprd
脚本:
stages {
stage('Setup') {
steps {
script {
pomPath = findFiles(glob: "**/pom.xml")[0].path
env.WORKSPACE = pwd()
pomDir = bat(script: "for %%F in ($pomPath) do set dirname=%%~dpF", returnStdout: true).trim()
echo "env.WORKSPACE:" + env.WORKSPACE
echo "pom file path:" + pomPath
echo "pom directory****:" + pomDir
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
env.WORKSPACE:C:\Program Files (x86)\Jenkins\workspace\dev-my-api
pom file path:my-data-api\pom.xml
pom directory****:C:\Program Files (x86)\Jenkins\workspace\my-data-api>for %F in (my-data-api\pom.xml) do set dirname=%~dpF
Run Code Online (Sandbox Code Playgroud)
路径: …
我创建了 Spring Boot REST API,其中所有端点都将具有标头参数“sessionGuid”。我想使用 AOP 打印该 sessionGuid。
@Before("PointcutDefinition.controllerLayer()")
public void beforeAdvice(JoinPoint joinPoint)
{
Object[] signatureArgs = joinPoint.getArgs();
for (Object signatureArg : signatureArgs)
{
System.out.println("Arg: " + signatureArg);
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码打印所有参数,即如果我的 URL 是
{{base-url}}/v1/login/users/SOMENAME/status 它同时打印 SOMENAME(路径变量)和“sessionGuid”值。我只想打印标题参数“sessionGuid”中的值。
joinPoint.getArgs(); 正在返回一个数组。我不想打印类似 arg[1] 的内容,因为 sessionGuid 可能是不同操作中的第三个或第四个参数。
有没有办法让我只能从标题中打印“sessionGuid”。
无法嵌入图像并附加 Spring Boot 资源文件夹中的文件
我使用 Spring Boot 创建了一个 Restful Web 服务(Jar 文件而不是 War 文件)。有些服务将发送电子邮件,有些服务将发送带有附件的电子邮件(将动态创建)。Web 部件(Angular)驻留在部署在不同服务器上的 Apache 服务器中。
我使用 Freemarker 模板撰写电子邮件并使用 Amazon SES 发送电子邮件。
来自 freemarker 模板
<IMG src="cid:gridEmailHeaderImage">
Run Code Online (Sandbox Code Playgroud)
添加图像的代码
MimeBodyPart inlineImage = new MimeBodyPart();
DataSource fds = new FileDataSource(imagePath.getAbsolutePath());
inlineImage.setDataHandler(new DataHandler(fds));
inlineImage.setHeader("Content-ID", "<" + contentId + ">");
inlineImage.setFileName(fds.getName());
content.addBodyPart(inlineImage);
Run Code Online (Sandbox Code Playgroud)
如果我提供绝对路径,我就可以嵌入和附加文件。但如果提供相对路径则不起作用。
我的文件夹结构
C:\workspace\service-1.0\src\main\resources\images\header.png
C:\workspace\service-1.0\src\main\resources\attachements\test-attachment-1.txt
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法但没有成功
方法一
ServletContext context;
String path = context.getRealPath("/resources/images")+"/header.png";
Run Code Online (Sandbox Code Playgroud)
它正在以下文件夹中查找图像,但图像在该文件夹中不可用。
C:\Users\用户名\AppData\Local\Temp\tomcat-docbase..\resources\images/header.png
方法2
basePath = this.getClass().getClassLoader().getResource("/images/").getPath();
Run Code Online (Sandbox Code Playgroud)
C:\workspace\service-1.0\src\main\resources\images\header.png
/C:/workspace/service-1.0/build/libs/service-1.0.jar!/BOOT-INF/classes!/images/ (仅适用于 eclipse,但不适用于命令提示符 java -jar build\lib\myapp.jar )
方法3
ClassPathResource file = new …Run Code Online (Sandbox Code Playgroud) 要应用享元模式,我们需要将 Object 属性分为内在和外在属性。内在属性使对象独一无二,而外在属性由客户端代码设置并用于执行不同的操作。
但我的问题是为什么我们不能同时拥有内在和外在属性作为实例变量(请参阅下面的电子邮件类),而只能在循环外创建一个对象并在循环中设置参数并使用不同参数发送多封电子邮件。
public class Test {
public static void main(String[] args) {
Email ob = new Email();
for (int i = 0; i < 10; i++) {
ob.sender = String.valueOf(i);
ob.sendEmail();
}
}
}
public class Email {
public String sender;
public void sendEmail()
{
System.out.println("Email sent to sender:"+sender);
}
}
Run Code Online (Sandbox Code Playgroud)