小编Ale*_*sto的帖子

使用 WireMock 对第三方服务的存根调用

我试图找到一种方法来通过WireMock. WireMock很容易模拟任何相对 URL,但是如果我们想要拦截从我们的节点发送到某个 3rd 方服务并返回预定义响应的 REST 调用呢?有没有可能做到这一点?

integration-testing stub stubbing wiremock

7
推荐指数
1
解决办法
3326
查看次数

使用 RestTemplate 进行部分 JSON 检索

我正在使用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)

spring json get resttemplate spring-web

5
推荐指数
1
解决办法
1328
查看次数

将配置类添加到 SpringBootTest 会中断组件扫描

我正在尝试禁用真正的 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)

autowired spring-boot component-scan fongo spring-boot-test

5
推荐指数
1
解决办法
3023
查看次数

使用 Spring Data 和 MongoDB 查找具有最新日期的实体

给定下一个对象结构:

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)

mongodb spring-data spring-data-mongodb localdate

3
推荐指数
1
解决办法
8162
查看次数

Spring Security java.lang.IllegalArgumentException:无法计算表达式'ROLE_ADMIN'

我正在使用" 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)

java spring-mvc spring-security spring-3 spring-4

1
推荐指数
1
解决办法
6744
查看次数