我试图在使用@Primary在测试配置中声明的测试期间覆盖Spring bean.一个声明位于src/main/java路径中,另一个声明位于src/test/java路径中.
但是,Spring故意用非主bean替换主bean,这是我不想用于测试的bean.如果我只是注释掉生产(src/main/java)配置bean,它会根据需要在测试配置中使用主测试(src/main/test)bean.(显然,每次我想运行测试时都无法注释掉代码.)
从日志:
osbfsDefaultListableBeanFactory - 使用不同的定义覆盖bean'sqsConnectionFactory'的bean定义:replace [Root bean:class [null]; 范围=; 抽象= FALSE; lazyInit = FALSE; autowireMode = 3; dependencyCheck = 0; autowireCandidate = TRUE; 初级= TRUE; factoryBeanName = testJmsConfiguration; factoryMethodName = sqsConnectionFactory; initMethodName = NULL; destroyMethodName =(推断); 在类路径资源[com/foo/configuration/TestJmsConfiguration.class]中定义]
同
[root bean:class [null]; 范围=; 抽象= FALSE; lazyInit = FALSE; autowireMode = 3; dependencyCheck = 0; autowireCandidate = TRUE; primary = false ; factoryBeanName = jmsConfiguration; factoryMethodName = sqsConnectionFactory; initMethodName = NULL; destroyMethodName =(推断); 在类路径资源[com/foo/configuration/JmsConfiguration.class]中定义]
为什么spring用非主bean替换主bean?如何让Spring使用专门标记为主bean的bean?
编辑:src/main/java配置:
@Configuration
public class JmsConfiguration …Run Code Online (Sandbox Code Playgroud) 我对使用AWS策略生成器创建的S3存储桶具有以下策略,以允许以特定角色运行的lambda访问存储桶中的文件.但是,当我执行Lambda时,我获得403权限被拒绝:
"errorMessage": "Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: <requestId>)",
"errorType": "com.amazonaws.services.s3.model.AmazonS3Exception",
Run Code Online (Sandbox Code Playgroud)
S3存储桶的策略:
{
"Version": "2012-10-17",
"Id": "Policy<number>",
"Statement": [
{
"Sid": "Stmt<number>",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<account>:role/<roleName>"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::<bucketName>/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
这个政策有什么问题?Lamba正在使用策略中配置的角色运行.
我的任务是与 3rd 方网络服务集成。在他们的 WSDL 中,他们声明数组如下:
<?xml version="1.0"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" name="ITransEazSvcservice" targetNamespace="http://tempuri.org/" xmlns:tns="http://tempuri.org/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:ns1="urn:LandairSvcIntf">
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:LandairSvcIntf">
...
<complexType name="CustomItemArray">
<complexContent>
<restriction base="soapenc:Array">
<sequence/>
<attribute xmlns:n1="http://schemas.xmlsoap.org/wsdl/" ref="soapenc:arrayType" n1:arrayType="ns1:CustomItemRecord[]"/>
</restriction>
</complexContent>
</complexType>
...
Run Code Online (Sandbox Code Playgroud)
当我运行 xjc 以生成与 Web 服务集成的代码时,我收到以下错误消息:
[错误] 未定义的简单或复杂类型“soapenc:Array”
和
[错误] 未定义的属性 'soapenc:arrayType'
为了生成与他们的服务集成的正确代码,我需要做什么?我们使用Java。
我有一个 Java 8 Maven 项目,它定义了一个自定义注释和一个方面。在该项目本身中运行测试代码时,它会将方面应用于带注释的类。我然后打包和安装项目。
然后我将该依赖项引入到一个新项目(非 Spring)中。新项目然后没有将方面应用于它的类,尽管它确实引入了新的注释。
如何使用单个 JAR 来定义注释和方面并将其应用于我所有的 Maven 项目?
java ×3
amazon-s3 ×1
aop ×1
aspect ×1
aspectj ×1
aws-lambda ×1
aws-sdk ×1
maven ×1
soap ×1
spring ×1
spring-boot ×1
spring-test ×1
web-services ×1
wsdl ×1
xjc ×1