小编Dav*_*vid的帖子

使用子路由处理Angular 2路由器通配符

当使用带有angular2的路由器"3.0"的子路由时,不需要在父路由器配置中声明它们(之前,您必须执行类似于/child...父组件的操作).

我想配置一个全局的"找不到页面"处理程序,我可以这样做:

{ path: '**', component: PageNotFoundComponent }
Run Code Online (Sandbox Code Playgroud)

在我的应用路由模块中.

警告:如果我这样做,路由器会导航到应用程序路由模块中声明的路由,然后才能PageNotFoundComponent正常运行.但是当我尝试访问子路由时(RouterModule.forChild在某些子路由模块中使用声明),它总是导航到通配符路由.

直观地说,通配符路由应该放在所有其他路由配置的后面,因为路由器以声明顺序解析.但是在儿童路线之后似乎没有办法宣布它.在所有子路由器模块中声明通配符路由似乎也不是很优雅.

我是否遗漏了某些内容,或者在使用子路由时是否无法在Angular-2-Router-3中定义全局404页面?

angular

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

IntelliJ IDEA 2019.1 中的 Gradle-File 警告

我将我的 IntelliJ IDEA 安装从 2018.3 升级到 2019.1,现在我看到build.gradle了以前没有的错误。我怀疑更改了偏好,但找不到任何偏好。

我看到两种错误:

  • 几乎所有内容都带有下划线,警告消息弹出窗口显示“未找到方法调用插件的候选对象”。或“没有找到方法调用 buildscript 的候选者。”
  • 我使用 Spring Boot 插件并在第一行导入它。它现在是红色的,并且弹出窗口显示“无法解析符号‘SpringBootPlugin’”。

IntelliJ 错误消息的屏幕截图

这在 2018.3 中运行良好。gradle 构建有效,即./gradlew …:build从命令行运行,从 IDE 运行 gradle 任务也是如此。

更新 我注意到在“项目结构”中,根模块(这是一个多模块构建)存在两次:一次是名称settings.gradle,一次是代码所在目录的名称。settings.gradle将名称更改为名称时在目录中,“项目结构”中的重复条目消失了,错误也build.gradle消失了。

java intellij-idea gradle

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

我需要Spring 5 for Java 9吗?

Spring 5被宣传为"支持JDK 9",同时Spring 4.3.13的文档声明它支持Java 8(以及6和7).

这是否意味着我需要在可以之前升级到Spring 5

  • 在JRE 9中运行我的应用程序?
  • 使用JDK 9编译我的应用程序?

java spring spring-boot java-9

12
推荐指数
2
解决办法
4383
查看次数

有没有办法使用maven自动化功能分支重新集成?

假设您有一个使用maven和subversion存储库的项目.它由很多模块组成.到目前为止,开发发生在主干,但现在将引入功能分支.考虑到团队中的所有开发人员应该开始使用功能分支,这必须尽可能轻松.

因此,要创建分支,您可以使用release插件为您方便地创建分支,正确更改所有模块poms的版本号,甚至更新<scm>父pom中的部分.

现在,如果要将功能分支重新集成到主干,则发布插件中没有匹配的功能 - 您必须手动执行所有操作:

  • 合并reintegrate国旗
  • 更改所有poms中的版本号
  • <scm>手动更改部分
  • 承诺

这不仅麻烦,而且每次手动完成也容易出错(这在广泛使用特征分支时可能很常见).我知道至少第二点可以使用release:update-versions或自动化version:set,但必须有更多,对吧?我错过了什么?

svn maven maven-release-plugin

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

在一次开发多个未来版本时,什么是良好的分支策略?

过去

我使用subversion作为scm开发了一个软件项目.到目前为止,开发总是发生在trunk,所以当需要修复bug修复时会出现问题.现在,我们想重新考虑我们的分支策略,其要求是:我们希望能够同时处理多个未来版本.

任务

这意味着:假设,我们正在处理的当前版本是1.0.下一个计划版本是2.0,之后的版本是3.0.现在我们已经发布了1.0版本

  • 维护1.0版
  • 开发2.0的功能
  • 同时开发3.0的功能

当然,在其他两个版本中也需要在1.0中应用的修补程序.此外,2.0的功能也必须在3.0.此外,可能会计划一个次要版本,例如1.1,其中还包括新功能,并且必须单独维护.

可能的解决方案

我提出了以下分支策略:

  • 行李箱将被废弃
  • 对于每个新的计划发布,都会创建一个源自最后一个发布分支的分支
  • 更改在版本时间轴中"向上"传播

让我再详细说明一下:在给定的示例中,我们将从trunk分支1.0版.此外,我们将从版本1.0分支2.0版,从2.0版分支3.0版.当在1.0中进行更改时,它将合并到2.0,然后合并到3.0.

所描述的分支策略的可视化(请原谅油漆质量差)

这个问题

这是一种有效的方法吗?它会在技术上有效吗?是否存在组织缺陷?有最佳做法吗?(所有互联网都会提出:"在主干中开发,在发布分支中维护").放弃后备箱对我来说特别奇怪 - 这是错的吗?

svn branch branching-strategy

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

JDK 8u161 中 Apache FTPS 客户端中的 SSL 会话重用

使用 Apache Commons-NetFTPSClient连接到现代 FTP/S 服务器不起作用。原因是它们需要 SSL 会话重用,即来自控制连接的 SSL 会话需要重新用于数据连接。

这通常可以在服务器中停用,但那是

  • 没有安全感
  • 并不总是一个选项(因为服务器可能不受您的控制)

正确的解决方案是让客户端实际重用会话。Commons-Net有一个开放的错误,但它看起来不会很快得到解决。

此外,还有一个由 Cyber​​duck(一个 FTP 客户端应用程序)的作者创建的“反射黑客”,在他们的错误跟踪器中进行了描述,更深入地在博客文章中进行了描述StackOverflow 上还有一篇相关的文章描述了这个解决方案。他们使用反射来访问 JDK 的内部缓存SSLSessionContext并注入一个新条目。

在 JDK 8u161 和 9.0.4 (?) 之前,此 hack 一直运行良好,其中引入了一些更改日志中描述的 SSL更改。显然,一些实现细节发生了变化,导致黑客不再起作用。

据我所知,现在有以下选项:

  • 继续使用 JDK 8u152,直到有人找到解决方案/apache-commons-net 被修补/JDK 更改被回滚(这不是一个真正的选择,因为这会切断生产系统的安全更新)
  • 使用不同的 FTPS 客户端(我能找到的唯一替代方案是专有的且相当昂贵)
  • 尝试对SSLSessionContext实现的更改进行逆向工程以找到新的解决方法。这不仅看起来像是一项不平凡的任务 - 解决方案可能会再次变得笨拙,因此随时可能再次崩溃。
  • 不再使用 FTP/S

任何人都可以建议如何在这里进行?


相关链接:

java ftp ftps apache-commons-net

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

SpringBoot + Lombok + MapStruct 不能一起工作

我正在尝试使用 Lombok 和 MapStruct 配置 SpringBoot (v2.6.2),已经配置了 Maven 编译器插件和 lombok-mapstruct-binding (annotationProcessorPaths),但没有创建 lombok 类:

pom.xml

*<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>io.knowledge</groupId>
    <artifactId>knowledge</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>knowledge</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>11</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.target>11</maven.compiler.target>
        <maven.compiler.source>11</maven.compiler.source>
        <version.mapstruct>1.4.1.Final</version.mapstruct>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
            <version>${version.mapstruct}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude> …
Run Code Online (Sandbox Code Playgroud)

lombok spring-boot mapstruct

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