我试图找到一种方法来通过WireMock. WireMock很容易模拟任何相对 URL,但是如果我们想要拦截从我们的节点发送到某个 3rd 方服务并返回预定义响应的 REST 调用呢?有没有可能做到这一点?
我正在使用Spring RestTemplate发送GET request到第三方服务。它返回JSON代表 a 的巨大list of some entities。但是每个实体都非常大,并且包含大量不必要的数据。我只需要从每个实体中获取三个字段。我怎样才能建立我的模型来实现它?例如,如果我们有这个JSON:
{
"entity1": "foo",
"entity2": "bar",
"entity3": "...",
"entity4": {
"aaa": "...",
"bbb": "...",
"ccc": 5
},
"entity5": [
"...",
"..."
]
}, {
"entity1": "foo",
"entity2": "bar",
"entity3": "...",
"entity4": {
"aaa": "...",
"bbb": "...",
"ccc": 5
},
"entity5": [
"...",
"..."
]
}
Run Code Online (Sandbox Code Playgroud)
我有一堂课:
public class SomeModel implements Serializable {
private static final long serialVersionUID = 1L;
private Long entity1;
private …Run Code Online (Sandbox Code Playgroud) 我正在尝试禁用真正的 Mongo 连接并在测试中用 Fongo 模拟替换它。
这是我的测试课:
@SpringBootTest
@RunWith(SpringRunner.class)
public class ControllerTest {
@Autowired
private WebApplicationContext wac;
@Autowired
private ObjectMapper objectMapper;
@MockBean
private MyService service;
private MockMvc mockMvc;
@Before
public void setup() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}
@Test
public void performTest() throws Exception {
... logic ...
}
}
Run Code Online (Sandbox Code Playgroud)
除非我尝试添加更改此行的配置文件,否则它工作正常:
@SpringBootTest
Run Code Online (Sandbox Code Playgroud)
对此:
@SpringBootTest(classes = TestConfig.class)
Run Code Online (Sandbox Code Playgroud)
配置类本身:
@Configuration
@ComponentScan
@EnableMongoRepositories
public class TestConfig extends AbstractMongoConfiguration {
@Override
protected String getDatabaseName() {
return "FongoDB";
}
@Override
public Mongo mongo() {
return new Fongo(getDatabaseName()).getMongo(); …Run Code Online (Sandbox Code Playgroud) 给定下一个对象结构:
class Foo {
@Id
String id;
LocalDate date;
...
}
Run Code Online (Sandbox Code Playgroud)
我们将这些对象存储在MongoDB. 是否有可能通过MongoRepository下一个示例中的方式获取具有最新日期的实体?
interface FooRepository extends MongoRepository<Foo, String> {
@Query(???)
Foo getByLatestDate(LocalDate date);
}
Run Code Online (Sandbox Code Playgroud) 我正在使用" Amuthan G - Spring MVC初学者指南 " 这本书.目前我正在尝试使用下一个实现安全性security-context.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-4.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<security:http auto-config="true">
<security:intercept-url pattern="/products/add" access="ROLE_ADMIN" />
<security:form-login login-page="/login"
default-target-url="/products/add"
authentication-failure-url="/loginfailed"/>
<security:logout logout-success-url="/logout" />
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<security:user name="Admin" password="Admin123" authorities="ROLE_ADMIN" />
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
</beans>
Run Code Online (Sandbox Code Playgroud)
与安全相关的配置web.xml:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/webcontext/security-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
但是这个例子最终会IllegalArgumentException在打开安全路径时结束:
java.lang.IllegalArgumentException: Failed to evaluate expression 'ROLE_ADMIN' …Run Code Online (Sandbox Code Playgroud) autowired ×1
fongo ×1
get ×1
java ×1
json ×1
localdate ×1
mongodb ×1
resttemplate ×1
spring ×1
spring-3 ×1
spring-4 ×1
spring-boot ×1
spring-data ×1
spring-mvc ×1
spring-web ×1
stub ×1
stubbing ×1
wiremock ×1