ExtプラグインでSpringを使用してコアクラスを拡張する

この記事文書のLiferayデジタル・エンタープライズのコアクラスを拡張することができますLiferayをDXPでのExtプラグインを使用するためのサポートを使用する場合(例えば、ポータルIMPLポータルカーネル、など)スプリングを使用。 コアクラスを区別するために、「Finding Core Liferay Portal Artifactsセクションを参照できます。 Extプラグインを作成する前に、Ext Pluginsによる一般化されたカスタマイズのチュートリアルを確認してください。

解決

例として、portal-impl.jarあるPortalImplコアクラスを拡張するサンプルExtプラグインを作成します。 サーバーのノード名を返すSpring Beanを介してPortalImpl.getComputerName()メソッドをオーバーライドします。 Extプラグインはこのメソッドをオーバーライドし、サーバーから返されるノード名を変更します。

  1. Plugins SDKの/ extフォルダーに移動し、次のコマンドを実行します。

    create.[bat|sh]  portal-impl-extend-spring "PortalImpl Extend Spring"
    

    Extプラグインが生成され、Plugins SDKの/ extフォルダーに、指定した名前の後に-ext(例:portal-impl-extend-spring-ext)が付きます。

  2. Liferay DXPインストールでのサーバーノード名の表示は、デフォルトでfalseに設定されています。 このプロパティを有効にする必要があります。 これを行うには、Liferayバンドルのルートフォルダーに移動し、portal-ext.propertiesファイルを作成します。 そのファイルに、次のプロパティを挿入します。

    web.server.display.node=true
    

    Liferayバンドルを再起動すると、サーバーのノード名が表示されます。

  3. / ext-impl / srcフォルダーに、新しいクラスを配置するパッケージ名を表すフォルダー構造を作成します(例:com / liferay / portal / util)。 次に、新しいJavaクラスを作成します。

    package com.liferay.portal.util;
    
    public class SamplePortalImpl extends PortalImpl {
    @Override public String getComputerName() { return "SAMPLE_EXT_INSTALLED_" + super.getComputerName(); } 
    }

拡張クラスで定義されたメソッドは、PortalImpl.getComputerName()メソッドをオーバーライドします。 "SAMPLE_EXT_INSTALLED_"文字列がサーバーのノード名の前に追加されました。

  1. Extプラグインの/ ext-impl / srcフォルダーに、META-INF / ext-spring.xmlファイルを作成します。 このファイルに、次のコードを挿入します。

    <?xml version="1.0"?>
    
    <beans
        default-destroy-method="destroy"
        default-init-method="afterPropertiesSet"
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
    >
    &lt;bean class="com.liferay.portal.util.SamplePortalImpl" id="com.liferay.portal.util.PortalImpl" /&gt; 
    </beans>

コアサービスクラスの変更を計画しているので、Spring Beanを介してその拡張クラスを注入できます。 これにより、新しいクラスが確実に認識されます。 拡張クラスの完全に定義されたクラス名(たとえば、com.liferay.portal.util.SamplePortalImpl)をBeanタグのクラス属性と完全に定義された元のクラス名(たとえば、com.liferay.portal.util。 PortalImpl)をBeanタグのid属性に追加します。

Extプラグインがデプロイされると、新しいサービス(SamplePortalImpl)がコアPortalImplクラスを拡張します。

驚くばかり! Liferay Digital Enterpriseのコアクラスを拡張するExtプラグインを作成しました。 「プラグイン導入」セクションの指示に従って、プラグインをサーバーに導入します。

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています