小编liv*_*ves的帖子

gradle error无法找到方法dependencyManagement()

下面是我的build.gradle

buildscript {
    ext {
        springBootVersion = '2.0.0.M3'
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}


apply plugin: 'org.springframework.boot'
apply plugin: 'maven-publish'

dependencyManagement {
    imports {
        mavenBom 'org.springframework.cloud:spring-cloud-starter-parent:Brixton.SR7'
    }
}

dependencies {


    compile("org.springframework.cloud:spring-cloud-starter-eureka")
    compile "org.elasticsearch:elasticsearch:5.5.0"

    testCompile('org.springframework.boot:spring-boot-starter-test')
}
Run Code Online (Sandbox Code Playgroud)

我使用gradle 2.14并得到以下错误

> Failed to apply plugin [id 'org.springframework.boot']
   > Spring Boot plugin requires Gradle 3.4 or later. The current version is Gra
dle 2.14
Run Code Online (Sandbox Code Playgroud)

然后我按照错误消息中的建议将gradle升级到3.4.

现在我得到以下错误

无法在类型为org.gradle.api.Project的根项目"myproject"上找到参数[build_79bcact4bkf1 sckkod1j3zl7l $ _run_closure1 @ 4a2d71c9]的方法dependencyManagement().

方法dependencyManagement()在gradle 3.4中不再可用吗?如果有人知道在gradle 3.4中使用的替代方法,请回复

gradle build.gradle

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

Spring数据jpa @transactional

以下是我的申请流程

控制器 - 服务 - 存储库

在服务层,我们有@Transactional注释我们也有jpa:repository配置,我们指定实体管理器和txn管理器.

我怀疑是否jpa:repositories认为考虑了指定的txn管理器,并且没有@Transactional在服务层指定的影响.例如:服务层@Transactional可以映射到自定义txn管理器,其中由服务调用的存储库可以具有不同的txn管理器.在那种情况下,它不会产生问题吗?

有人澄清@Transactional我们在使用jpa存储库时是否需要放在服务层?

spring spring-data spring-data-jpa

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

jpa 查询不会触发 hibernate envers

我正在使用 hibernate envers 来审计事件,当我调用 repositoy.delete() 或 repository.save() 时,它与 Spring Data JPA Repository 一起工作得很好

但是,如果我编写 jpa 查询并使用查询删除实体,则不会调用休眠环境审计侦听器。

我读到 hibernate envers 不会捕获本机查询 - 但它也不适用于 hibernate/jpa 查询吗?

感谢生命

hibernate hibernate-envers spring-data-jpa

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

jpa分页抑制计数查询

我们正在使用Spring Data JPA Repository.对于分页,我们将Pageable对象传递给JPA Repository findBy方法.

由于在我们的UI中,我们没有显示记录的总数,因此我们不希望触发计数查询.有没有办法抑制在分页期间触发的计数查询?

spring spring-data-jpa

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

运行spark作为java web应用程序

我使用了Spark ML,并且能够在预测业务问题时获得合理的准确性

数据并不大,我能够使用stanford NLP转换输入(基本上是一个csv文件)并在我的本地机器上运行Naive Bayes进行预测.

我想运行这个预测服务,就像一个简单的java主程序或一个简单的MVC Web应用程序

目前我使用spark-submit命令运行我的预测?相反,我可以从我的servlet /控制器类创建spark上下文和数据框吗?

我找不到关于这种情况的任何文档.

请就上述的可行性提出建议

apache-spark spark-dataframe apache-spark-mllib

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

模拟弹簧组件

我正在使用 Mockito 来模拟春豆。

当我模拟接口时它工作正常。

在我们的应用程序中,很少有@Component bean 没有实现任何接口。

当我尝试模拟此类组件时,spring 上下文会尝试在这些组件中注入属性。

Mockito 不支持模拟没有实现任何接口的弹簧组件吗?

根据要求附上示例

public interface EmployeeInterface {
    public Long saveEmployee(Employee employee);
}

@Component
public class EmployeeImpl implements EmployeeInterface {

    @Autowired
    public EmailSender emailSender

    public Long saveEmployee(Employee employee) {
        ...
    }
}

public interface EmailSender {
    public boolean sendEmail(Email email);
}

@Component
public class EmailSenderImpl implements EmailSender {

    @Autowired
    MailServerInfo  MailServerInfo;

    public boolean sendEmail(Email email) {
        ...
    }
}

public interface MailServerInfo {
    public String getMailServerDetails();
}

@Component
public class MailServerInfoImpl { …
Run Code Online (Sandbox Code Playgroud)

mocking spring-test mockito powermock powermockito

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

用于简单 RESTful 调用的响应式 R2DBC

由于 R2DBC 是反应式且非阻塞的,我想了解在简单的 RESTful CRUD 服务中使用 R2DBC 的好处

假设 Spring Boot 应用程序使用下面的存储库公开 RESTful 服务

public interface CustomerRepository extends ReactiveCrudRepository<Customer, Long> {

    @Query("SELECT * FROM customer WHERE last_name = :lastname")
    Flux<Customer> findByLastName(String lastName);

}
Run Code Online (Sandbox Code Playgroud)

该存储库是从服务调用的,结果需要在服务中进行转换,然后再返回到控制器。

Flux<Customer> customers = repository.findAll();
Run Code Online (Sandbox Code Playgroud)

为了访问完整的客户列表,我需要调用blockLast()Flux,这会使其阻塞并违背使用反应式组件的目的。

这是否意味着在这个简单的示例中使用 R2DBC 没有任何好处?我错过了什么吗?

Flux 是否只能用于异步订阅(其中 Flux 集合的处理发生在不同的线程中)?

project-reactor spring-data-r2dbc r2dbc

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

Spring数据弹性搜索通配符搜索

我正在尝试在下面的文本列表中搜索单词blue

"BlueSaphire","Bluo","alue","blue","BLUE","Blue","Blue Black","Bluo","Saphire Blue", "black", "green","bloo" , “宝蓝”

SearchQuery searchQuery = new NativeSearchQueryBuilder().withIndices("color")
                  .withQuery(matchQuery("colorDescriptionCode", "blue")
                  .fuzziness(Fuzziness.ONE)
                  )
                  .build();
Run Code Online (Sandbox Code Playgroud)

这工作正常,搜索结果返回以下记录以及分数

alue    2.8718023
Bluo    1.7804208
Bluo    1.7804208
BLUE    1.2270637
blue    1.2270637
Blue    1.2270637
Blue Black    1.1082436
Saphire Blue    0.7669148
Run Code Online (Sandbox Code Playgroud)

但我无法使通配符工作。“SaphireBlue”和“BlueSaphire”也有望成为结果的一部分

我尝试了以下设置,但它不起作用。

SearchQuery searchQuery = new NativeSearchQueryBuilder().withIndices("color")
                      .withQuery(matchQuery("colorDescriptionCode", "(.*?)blue")
                      .fuzziness(Fuzziness.ONE)
                      )
                      .build();
Run Code Online (Sandbox Code Playgroud)

在堆栈溢出中,我观察到指定分析通配符的解决方案。

QueryBuilder queryBuilder = boolQuery().should(
                queryString("blue").analyzeWildcard(true)
                        .field("colorDescriptionCode", 2.0f);
Run Code Online (Sandbox Code Playgroud)

我没有找到 queryString 静态方法。我正在使用 spring-data-elasticsearch 2.0.0.RELEASE 。

让我知道如何指定通配符,以便所有包含blue 的单词也将在搜索结果中返回

elasticsearch spring-data spring-data-elasticsearch

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

Apache Spark 文本相似度

我正在尝试以下 Java 示例

Apache Spark 中的高效字符串匹配

这是我的代码

public class App {
    public static void main(String[] args) {
        System.out.println("Hello World!");

        System.setProperty("hadoop.home.dir", "D:\\del");

        List<MyRecord> firstRow = new ArrayList<MyRecord>();
        firstRow.add(new App().new MyRecord("1", "Love is blind"));

        List<MyRecord> secondRow = new ArrayList<MyRecord>();
        secondRow.add(new App().new MyRecord("1", "Luv is blind"));

        SparkSession spark = SparkSession.builder().appName("LSHExample").config("spark.master", "local")
                .getOrCreate();

        Dataset firstDataFrame = spark.createDataFrame(firstRow, MyRecord.class);
        Dataset secondDataFrame = spark.createDataFrame(secondRow, MyRecord.class);

        firstDataFrame.show(20, false);
        secondDataFrame.show(20, false);

        RegexTokenizer regexTokenizer = new RegexTokenizer().setInputCol("text").setOutputCol("words")
                .setPattern("\\W");
        NGram ngramTransformer = new NGram().setN(3).setInputCol("words").setOutputCol("ngrams");
        HashingTF hashingTF = new HashingTF().setInputCol("ngrams").setOutputCol("vectors");
        MinHashLSH …
Run Code Online (Sandbox Code Playgroud)

apache-spark apache-spark-ml apache-spark-mllib

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

junit spring jms监听器

我想对下面的简单 jms 监听器代码进行单元测试

@Component
public class NotificationReader {

    @JmsListener(destination = "myAppQ")
    public void receiveMessage(NotificationMessage notificationMessage) {
        System.out.println("Received <" + notificationMessage.getStaffNumber() + ">");
    }

}
Run Code Online (Sandbox Code Playgroud)

在 junit 中,我使用 jmsTemplate 将消息注入 Active MQ。

我想测试 jms 监听器是否被调用。

我看到了一些解决方案(使用计数器),例如How to wait for @JMSListener annotated method to finish in JUnit,这实际上只是为了测试目的而更改侦听器代码,而我不想这样做。

还有其他选择吗?


尝试按照答案中的建议进行配置。

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestNotificationReader {

    @Autowired
    JmsTemplate jmsTemplate;

    @Value("${outbound.endpoint}")
    private String destination;

    @Test
    public void contextLoads() {
    }

    @Test
    public void testPutToQ() {
        NotificationMessage notificationMessage = new NotificationMessage();
        notificationMessage.setStaffNumber("100");
        notificationMessage.setWorkflowType("TYPE"); …
Run Code Online (Sandbox Code Playgroud)

spring-jms spring-junit

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

将请求转发到弹簧控制器

从 servlet ,我将请求转发到 spring 控制器,如下所示

RequestDispatcher rd = request.getRequestDispatcher("/myController/test?reqParam=value");
rd.forward(request, response);
Run Code Online (Sandbox Code Playgroud)

为了将参数传递给 spring 控制器,我将其作为转发 URL 中的请求参数传递。

有更好的方法吗?

我可以在转发期间作为方法参数传递给 spring 控制器,而不是传递请求参数吗?

servlets spring-mvc spring-rest

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

Spring MockMvc重定向不起作用

我正在尝试使用以下代码模拟发布请求。

我正在测试Spring Security登录请求。

MockMvc mvc = MockMvcBuilders.webAppContextSetup(context).addFilter(springSecurityFilterChain)
                .apply(springSecurity())
                .build();

    MvcResult mvcResult = mvc.perform(post("/j_spring_security_check?api=true").param("userName", USERNAME)
                    .param("password", PASSWORD)).andReturn();
Run Code Online (Sandbox Code Playgroud)

代码工作正常,成功登录后,我将重定向到另一个控制器。

    @Override
        public void onAuthenticationSuccess(HttpServletRequest request,
                HttpServletResponse response, Authentication authentication) throws IOException,
                ServletException {

RequestDispatcher rd = request.getRequestDispatcher("/myURL");
        rd.forward(request, response);

    }
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,我得到以下日志。重定向不会发生,并且映射到/ myURL的控制器不会被调用。

11:59:55.839 [main] DEBUG o.s.mock.web.MockRequestDispatcher - MockRequestDispatcher: forwarding to [/myURL]
11:59:55.841 [main] DEBUG o.s.s.w.c.HttpSessionSecurityContextRepository - The HttpSession is currently null, and the HttpSessionSecurityContextRepository is prohibited from creating an HttpSession (because the allowSessionCreation property is false) - SecurityContext thus not stored for next …
Run Code Online (Sandbox Code Playgroud)

spring-mvc spring-security spring-test spring-test-mvc

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

合并kafka流中的记录

是否可以合并kafka中的记录并将输出发布到不同的流?

例如,有一个针对 kafka 主题的事件流,如下所示

{txnId:1,startTime:0900},{txnId:1,endTime:0905},{txnId:2,endTime:0912},{txnId:3,endTime:0930},{txnId:2,startTime:0912}, {txnId:3,开始时间:0925}......

我想通过 txnId 合并这些事件并创建合并的输出,如下所示

{txnId:1,startTime:0900,endTime:0905},{txnId:2,startTime:0910,endTime:0912},{txnId:3,startTime:0925,endTime:0930}

请注意,传入事件中不会维护顺序。因此,如果在开始时间事件之前收到 txn Id 的 endTime,那么我们需要等到收到该 txnId 的开始时间事件后再启动合并

我浏览了 Kafka Streams 示例附带的字数示例,但不清楚如何等待事件,然后在进行转换时合并。

任何想法都受到高度赞赏。

apache-kafka kafka-consumer-api apache-kafka-streams confluent-platform

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