jhipster_JHipster入门,第3部分

jhipster

欢迎回到本JHipster教程系列! 在第一部分中,我们介绍了如何创建整体应用程序。 在第二部分中 ,我们逐步创建了一个微服务应用程序(这有点复杂)。

对于那些正在努力使JHipster正常运转的人,我想着重介绍一些设置事项和“陷阱”。 因此,对于那些决定尝试JHipster并尝试使用它的人来说,这个小博客更像是一个帮助者。 这就是我们将在此博客文章中讨论的内容,希望我能帮助您最大程度地缩短起步速度。

MySQL作为数据库。

但是我不想使用内存数据库...

因此,内存数据库非常适合进行测试和入门。 但让我们面对现实吧,内存不太可能用于生产场景。 有时,我认为应该将其完全删除。

无论如何,使用mySQL数据库非常简单,您只需对其进行配置。 真的没有太大的痛苦。

如果您在构建过程中从选择中选择了MySQL,那么大部分工作将为您完成。 您只需要插入您的信息即可。

datasource:
        url: jdbc:mysql://localhost:3306/your_db?useUnicode=true&characterEncoding=utf8&useSSL=false
        name:
        username: username
        password: pass
        hikari:
            data-source-properties:
                cachePrepStmts: true
                prepStmtCacheSize: 250
                prepStmtCacheSqlLimit: 2048
                useServerPrepStmts: true
    jpa:
        database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
        database: MYSQL
        show-sql: true
        properties:
            hibernate.cache.use_second_level_cache: true
            hibernate.cache.use_query_cache: false
            hibernate.generate_statistics: true
            hibernate.cache.region.factory_class: com.wwc.extendedday.config.hazelcast.HazelcastCacheRegionFactory
            hibernate.cache.use_minimal_puts: true
            hibernate.cache.hazelcast.use_lite_member: true

格林菲尔德schmeenfield…

当然,由于我们都有一个绿色的字段数据库,因此为您设置的列命名约定很好。 整理您的餐桌将变得轻而易举。

好吧,好吧,我知道,在现实世界中成为绿色应用的可能性很小。 通常,某个地方已经有一个数据库,其中的列名很好。 可能您已经有一个要重用的数据访问层,因为我们都讨厌“再次”这样做。

因此,唯一的问题是,在启动和/或尝试获取数据时,您会不断收到该列不存在的错误。 到底是什么造成了这场噩梦?

经过数小时的搜索(相信我做到了),我突然意识到我以前已经处理过这种愚蠢的行为。 默认的命名策略必须更改! 缺省值为SpringNamingStrategy并且必须更改为EJB3NamingStrategy ,该EJB3NamingStrategy将尊重具有给定(或不明确)列名的所有注释。 如果您要重用的原始代码是使用SpringNamingStrategy生成的,则只需忽略此SpringNamingStrategy ,然后继续进行即可。 否则,请在相应的application.yml文件中找到它并进行更改。

jpa:
        open-in-view: false
        hibernate:
            ddl-auto: none
            #naming-strategy: org.springframework.boot.orm.jpa.hibernate.SpringNamingStrategy
            naming-strategy: org.hibernate.cfg.EJB3NamingStrategy

在旧橡树上系一条缎带。

功能区超时

因此,您已经启动并正在运行,并且想要将数据输出到页面,但是它会一直超时! Aaarrgggghhhh !!! 您的数据太多!

因此,默认情况下,超时非常快。 但是,让我们面对现实吧,大多数客户希望所有数据都在一个呼叫中通过。 再次,我在这里为您服务!

我搜索了相当长的时间来延长超时时间。 我为此找到了正确的配置。 您可以通过多种方式来执行此操作,但是此“修复”为所有呼叫提供了更多时间。 看看这个!

eureka:
    instance:
        appname: ExtendedDayGateway
        instanceId: ExtendedDayGateway:${spring.application.instance_id:${random.value}}

ribbon:
    eureka:
        enabled: true

zuul:
    host:
        connect-timeout-millis: 10000
        socket-timeout-millis: 60000

hystrix:
    command:
        default:
            execution:
                isolation:
                    thread:
                        timeoutInMilliseconds: 60000

您看不到,对不起...

给它一些方向。

如果您已将项目作为微服务启动并运行,但是由于未经授权的调用而无法使数据端点向您提供数据,请确保已正确设置服务。

默认情况下,生成的服务假定端点在同一项目中。 您必须花时间给正确的方向。 因此,在service文件中,您必须在调用之前添加端点API名称。 在此示例中, extendeddayapi是端点的名称。

(function() {
    'use strict';
    angular
        .module('extendedDayGatewayApp')
        .factory('Students', Students);

    Students.$inject = ['$resource'];

    function Students ($resource) {
        var resourceUrl =  'extendeddayapi/api/students';

        return $resource(resourceUrl, {}, {
            'query': { method: 'GET', isArray: true},
            'get': {
                method: 'GET',
                transformResponse: function (data) {
                    if (data) {
                        data = angular.fromJson(data);
                    }
                    return data;
                }
            },
            'update': { method:'PUT' }
        });
    }
})();

没有存款,没有回报。

某些人可能不希望通过JHipster应用程序等使用Angular前端。如果采用这种方法,请确保将令牌传递给您正在对后端进行的所有调用。 登录后可以检索JWT令牌,并将其传递给所有后续调用。

有很多不同的方法可以做到这一点。 我将把您留在这里的设备上。 通过JHipster登录后,将生成JWT令牌。 您应该能够通过查看身份验证呼叫的响应来进行检索。 您会注意到“授权”字段及其后的值。 它将从“ Bearer”开始,然后是一个长令牌。

jhipsterseriespart3-1

这是一个邮递员介绍,向您展示它的外观。 将授权值传递给它并测试您的呼叫。 这可以在您的代码中以某种方式复制,以便您可以访问应用程序内的JWT令牌。 这完全取决于您要如何进行。

仅供参考:邮差是一种工具,使您无需创建任何代码即可测试GET,POST等。

jhipsterseriespart3-2

这是螺丝刀,不是锤子

这些工具可以为您提供帮助。

JHipster随附的工具箱允许您生成新实体。 您可以生成整个套件和kaboodle(正反),也可以只选择正反。 鉴于我已经准备好将后端用于新的前端,因此我尝试了前端生成器,它对您有所帮助。 该示例不包括后端代码。

yo jhipster:entity student --skip-server

生成的代码如下所示。

jhipsterseriespart3-3

这是消除基础知识的好工具。 实际上,仅当您将JHipster Angular应用程序用作前端时,它才有帮助。

再见了再见

这样就结束了JHipster传奇。 我知道此助手列表很短,但对我来说却非常耗时。

继续,与大家分享

不知道从哪里开始我对JHipster的想法的概述。 考虑到真正进入该市场的机会有限,我只会给我“第一印象”。

很大…

开箱即用的东西数量很大,但还不算很多。 看到所有这些东西都是开箱即用的,不知道它在做什么,这是令人畏惧的。 尽管我喜欢拥有所有这些功能,但我觉得我没有时间学习所有功能,或者至少足够舒适地向提出要求的人解释这些功能。

我们可以换个角度...

我不是Angular的忠实粉丝。 公平地说,我没有过多地研究它。 JHipster使用Angular 1有点令人沮丧,但是Angular 2可用。 作为一个新手,我宁愿学习“未来”,也不愿停留在过去。 我知道您可以使用React JS的一种风格,但是同样,有些人可能对此表示反对。 为什么我需要JHipster为我承担前端堆栈?

启动缓慢...

我没有检查这里是否还有其他选项,但是在构建整体式或网关应用程序时,npm install和bower install非常慢。 有点关了。 我想赶紧启动该应用程序。 但是,相比之下,实际上每个应用程序只执行一次。 所以这有点折腾。

给它启动...

这是一个良好的启动。 到目前为止,我非常喜欢使用Spring Boot。 它使使用Web应用程序变得非常容易。 无需费力地将工具安装到IDE中,就可以使用所选的任何服务器。 只需启动它,它的工作就非常简单。 Spring Boot的最大缺点可能是它在运行多个线程时开始消耗内存。

诚实的反馈…

在玩了一段时间之后,我确实喜欢它的微服务方面。 对我来说,创建所有这些面向服务的应用程序似乎是一个好主意。 我不是100%出售JHipster的需求,但我愿意尝试一下。 我可能只想制作一个简单的SPA,即可提供后端,并为前端提供一些非常简单的东西,例如BackboneJS。 我决不排除Angular或React,但是这是我必须花多少时间学习新知识的一个方面。

我将尽力将现有的单片应用程序(JSF)过渡到JHipster和微服务体系结构。 也许它将提供另一个机会为每个人写我的经验博客。

感谢您抽出宝贵的时间阅读! 祝你好运!

翻译自: https://www.javacodegeeks.com/2016/10/getting-started-jhipster-part-3.html

jhipster

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值