フロントエンドを殺せ!管理システムを構築するための3分間の純粋なJavaアノテーション

みなさん、こんにちは、シャオフです〜

最近、新しいプロジェクトに触れて、もっと面白いフレームワークを使っていることに気づきました。初めて業界に入ったときの私の夢は実現したと言えるので、ノンストップで共有します。

作業を始めたばかりのプロジェクトでは、フロントエンドとバックエンドの分離を行っていません。ページを維持するためにバックエンドが必要になることがよくあります。フロントエンドに適さないと感じることもあります。バックエンドテクノロジーを研究し、ミドルウェアのソースコードを確認するように依頼してください。ああ、フレームワークの基本原則を分析して分析します。これは大きな問題ではなく、たまにJS実行できます。cssスタイルを書かせてくれたらひどいし、全然興味がないので、こんな人がいるかどうかはわかりません。

今日紹介するフレームワークはページを書く必要がないので、以下のトピックに直接進みましょう。

Erupt一般的なバックエンド管理フレームワークは、持っていると言われている超低ビットレートゼロフロントエンドコードゼロ凝乳操作テーブルを構築する必要はありませんが純粋なJavaアノテーションが開発3分として知られる、他の特性を完全に構築することができバックエンド管理システム。

えーと、批判が多いようですね。魔法のようですか?一緒に使って感じてみましょう。

まず、現在バージョン以上、バージョン以上をEruptサポートしている環境を設定しましょうJava1.8.0Spring Boot2.0

簡単に構築

pom.xml必要なjarパッケージを紹介します

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--用户权限管理-->
        <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-upms</artifactId>
            <version>1.6.7</version>
        </dependency>
        <!--接口数据安全-->
        <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-security</artifactId>
            <version>1.6.7</version>
        </dependency>
        <!--后台WEB界面-->
        <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-web</artifactId>
            <version>1.6.7</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>compile</scope>
        </dependency>
    </dependencies>

application.yml ファイルはデータソースを設定するだけです。事前にデータベースを準備してください。データベースに関しては、小さなエピソードについて説明します。

Github前にケースコード送信したときhttps://github.com/chengxy-nds/Springboot-Notebook)、機密情報のシールドにあまり注意を払っていなかったため、クラウドデータベースアカウントがリークされました。最近、小さなパートナーがデータベースでプロジェクトを実行していることを発見しました。内部のデータ構造を見てください。完全なプロジェクトであることがわかりました。

ライブラリ自体はdemo私の実行中のケースのテストライブラリであり友人がケースを研究する技術的なポイントにより多くの時間を費やせるようにし、環境のセットアップで技術的ではない些細なことを減らすためです。

ここでパスワードを変更したり、ライブラリを削除したりしていないことがわかりました。使用したい場合は、引き続き使用してください。ただし、自分のものではないデータをいじることはできません他の人の学習に影響を与えるのは良くありません。

spring:
  datasource:
    url: jdbc:mysql://47.93.6.5:3306/erupt2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
  jpa:
    show-sql: true
    generate-ddl: true
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    database: mysql
  profiles:
    active: dev
  mail:
    username: [email protected]
    password: xxxxxxx
    host: smtp.qq.com
    properties:
      mail.smtp.ssl.auth: true
      mail.smtp.ssl.enable: true
      mail.smtp.ssl.required: true
server:
  port: 8888

少し外れた話をしたので、続けましょう〜

実はErupt、ここの環境は整っているんですよね〜、これで終わりですか?

私たちは何もしませんでした、プロジェクトは空のシェルであり、コードの行は書かれていませんでした、そして私たちはテーブルさえ構築しなかったようでした!

心配しないで、次のプロジェクトを開始して、コンソールが多くのテーブル作成ステートメントと挿入ステートメントを出力することを確認しましょう。これはErupt、フレームワークの基盤となるアプリケーションがJPA永続的であり、一部のシステムテーブルとデータがプリセットによって作成されるためです。

Eruptプリセットテーブルは、プロジェクトが初めて開始されたときに1回だけ作成されます。再作成する場合は、.Eruptファイル(通常はプロジェクトのワークスペース内)を削除して、ファイルの場所の方法を取得する必要があります。

System.getProperty("user.dir")

データベースに作成された16のシステムテーブルを見てください。e_upms_userテーブルはユーザーテーブルです。デフォルトでは、ユーザー名とパスワードの両方の管理者アカウントは1つだけですerupt

訪問した直後にhttp://127.0.0.1:8888/、それがどのような効果であったかを確認するために、完全なログインページがありました。

上記のユーザー名とパスワードを使用して直接ログインしますerupt。完全な権限制御やその他の機能は事前に実装されており、これまでコードを記述したことはほとんどありません。これらはすべてフレームワークとメニューデータによってカプセル化されています。はすべてデータベースから動的に取得されます。、基本的なバックグラウンド管理システムが構築されていますが、これは少しすごいです。

面白いページ

だから質問が来ていますか?ページをカスタマイズしたい場合はどうすればよいですか?

最初はerupt、すべてJavaアノテーションに基づいて開発されたゼロのフロントエンドコードであると述べ、次にアノテーションJavaを使用して簡単なページエクスペリエンス記述しました。

erupt2つのコアアノテーションがあります@Erupt@EruptField

  • @Eruptページの定義を表す注釈変更クラス
  • @EruptFieldページに表示されるフィールド名を表す注釈変更フィールド
  • @Power注釈は、ボタンの操作、追加、削除、変更、チェック、インポート、エクスポートなどを行うかどうかを制御します。
  • @Search注釈は、フィールドが検索条件であることを示します
  • @Table注釈とは、ページがデータに対応するテーブルをフェッチすることを意味します。設定されていない場合、ページが最初に初期化されるときに、クラス名と一致するテーブル名がクラスフィールド値に従って自動的に作成されます。

注釈には多くの種類があり、1つずつリストするのではなく、公式Webサイトにアクセスして確認するものもあります。https://www.erupt.xyz

以下では、Studentクラスを定義し、追加@Eruptして@EruptField注釈を付けます。これにより、ページと要素が終了した場合でも、認識が少し破壊されますか?

/*
 *  @Erupt注解修饰在类上,@EruptField注解修饰在字段上
 *  其他注解均为Jpa注解
 */
@Getter
@Setter
@Erupt(name = "学生表",
        power = @Power(importable = true, export = true)
)
@Entity
//@Table(name = "t_student")
public class Student extends BaseModel {

    @EruptField(
            views = @View(title = "学生姓名"),
            edit = @Edit(title = "学生姓名", notNull = true, search = @Search(vague = true))
    )
    private String studentName;

    @EruptField(
            views = @View(title = "所属班级"),
            edit = @Edit(title = "所属班级", notNull = true)
    )
    private String studentClass;

    @EruptField(
            views = @View(title = "学生年龄"),
            edit = @Edit(title = "学生年龄", notNull = true)
    )
    private String studentAge;

    @Lob
    @EruptField(
            views = @View(title = "学生性别"),
            edit = @Edit(title = "学生性别", notNull = true)
    )
    private String studentSex;

    @EruptField(
            views = @View(title = "考核状态"),
            edit = @Edit(title = "考核状态", notNull = true, boolType = @BoolType(trueText = "通过", falseText = "挂科"), search = @Search)
    )
    private Boolean status;
}

ただし、今回は新しく作成されたページは表示されません。メニューメンテナンスでカスタムメニュー間のマッピングを手動で行う必要もありますタイプは新しいクラス名 である必要がありますStudent

保存して更新すると、新しいページが表示され、ページの機能が非常に完了し、基本的な操作、クエリ、インポート、およびエクスポートの機能がすべて自動的に実現されます。

新しい学生情報がページに追加され、対応するStudentテーブルにはより多くのレコードがあり、この永続化プロセスは完全にフレームワークによって実行されます。

が、Eruptフレームワークは深さで、フロントエンドとバックエンドのコードをカプセル化し、それが私たちの個々のニーズを満たすために豊富で柔軟なカスタムインターフェイスを提供します。

私たちは名前遮蔽することを期待して、新しい学生情報を入力したときたとえば、张三学生のを、エージェントは、ページ上のボタンを機能することができdataProxy、ボタンのエージェントが対応する方法を実現する上でカスタム・ロジックを実装し、このようにbeforeAddafterAdd剤であります新しいボタン。

@Getter
@Setter
@Erupt(name = "学生表",dataProxy = {StudentDataProxy.class},
        power = @Power(importable = true, export = true)
)
@Entity
//@Table(name = "t_student")
public class Student extends BaseModel {

}
public class StudentDataProxy implements DataProxy<Student> {

    @Override
    public void beforeAdd(Student student) {
        //后台字段校验
        if ("张三".equals(student.getStudentName())) {
            throw new EruptApiErrorTip("名称禁止为张三!");
        }
    }

    @Override
    public void afterAdd(Student student) {

    }
    @Override
    public void afterUpdate(Student student) {

    }

    @Override
    public void afterDelete(Student student) {
    }
 }

ページに名前が記載されて张三いるクラスメートを入力すると、正常にブロックされました。同様の機能は他にもたくさんあるので、ここでは例を1つずつ挙げません。ドキュメントを参照してドキュメントを参照してください〜

従来の方法でインターフェースを開発したい場合はErupt、ページ生成ルールの競合を心配する必要はなく、まったく影響を受けません。さらに、Erupt内部JPA統合さdaoれており、対応するAPIを呼び出す限り、既製のインターフェースを提供し、開発を開始できます。

手作業でJavaコードを記述したくないかどうかは関係ありませんEruptコードジェネレーター、カスタムJavaクラス名、フィールド名も用意されており、コードを生成できますcopy

これについて言えばErupt、主にそのような機敏な武器があることを友達に知らせるために、いくつかの基本的な機能を紹介しただけです。

だけでなく、それはまた、内蔵されたタイマーのような豊富なデータ型、サポートしていることを任务管理多表联合查询前后端分离部署接口权限操作记录多数据源邮件系统黑白名单直接APIを使用することができます呼び出して、非常に多くの便利な機能を。

後ろに言う

Erupt フレームワークの利点は明らかで、高速で、効率的で、使い始めが簡単で、初心者には非常に使いやすいですが、実際の実稼働環境では、フレームワークを使用して構成辞書のデータ管理を行っています。

その深いカプセル化により開発がシンプルかつ効率的になりますが、比較的複雑で高度にカスタマイズされたシステムの場合、Eruptフレームワークは不十分であるように見えます。さらに重要なことに、そのコミュニティは特に活発ではなく、結局のところ、ニッチなフレームワークです。

しかし、テクノロジーは常にビジネスに役立ってきました。あなたのビジネスがEruptあなたの気質に合っているなら、それを使うことを躊躇しないでください!

おすすめ

転載: blog.csdn.net/nidongla/article/details/115268344