1. Trang chủ
  2. » Công Nghệ Thông Tin

Giới thiệu Spring Roo, Phần 3: Phát triển các phần bổ sung Spring Roo

28 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Kiến trúc phần bổ sung của Spring Roo Dưới dạng mẫu đơn giản nhất của mình, một phần bổ sung là một thành phần phần mềm bổ sung một khả năng cụ thể cho một ứng dụng phần mềm. Ví dụ, trong hầu hết các trình duyệt web, các phần bổ sung cung cấp sự hỗ trợ video. Một ví dụ khác là Eclipse (một IDE mã nguồn mở mà nhiều nhà phát triển Java™ sử dụng hoặc ít nhất đều biết). Hầu hết các khả năng đều do các phần bổ sung cung cấp, như hỗ trợ JUnit, hỗ...

Giới thiệu Spring Roo, Phần 3: Phát triển phần bổ sung Spring Roo Kiến trúc phần bổ sung Spring Roo Dưới dạng mẫu đơn giản mình, phần bổ sung thành phần phần mềm bổ sung khả cụ thể cho ứng dụng phần mềm Ví dụ, hầu hết trình duyệt web, phần bổ sung cung cấp hỗ trợ video Một ví dụ khác Eclipse (một IDE mã nguồn mở mà nhiều nhà phát triển Java™ sử dụng biết) Hầu hết khả phần bổ sung cung cấp, hỗ trợ JUnit, hỗ trợ SVN, v.v Tôi sử dụng cụm từ phần bổ sung làm thuật ngữ chung dùng cho trình cắm thêm phần mở rộng Spring Roo có khái niệm phần bổ sung sau: Để cho phép nhà phát triển bên thứ ba tạo khả để mở rộng khả Spring Roo Để giúp Spring Roo dễ dàng bổ sung tính Để giúp Spring Roo cịn chút trội (tức là, làm giảm kích cỡ Spring Roo) Các thành phần logic Spring Roo Spring Roo chia thành hai phần logic Các thành phần cốt lõi Spring Roo: Để cho phép phát triển phần bổ sung, Spring Roo cung cấp tập thành phần cốt lõi để tạo thành môi trường thực lưu trữ máy chủ cho phần bổ sung khác Các thành phần Classpath (Đường dẫn lớp), hỗ trợ Process Manager (Trình quản lý quy trình) Shell (Trình vỏ) Trong đó, Process Manager hỗ trợ Project (Dự án) File Undo (Hồn lại tệp) Project hỗ trợ Model (Mơ hình), Metadata (Siêu liệu) File Monitor (Giám sát tệp) Cuối cùng, có thành phần Support (Hỗ trợ), tất sử dụng Hình đưa biểu diễn trực quan mối quan hệ Hình Các thành phần cốt lõi Spring Roo Chúng ta bàn số mô đun cốt lõi: Support (Hỗ trợ) — Mô đun org.springframework.roo.support cung cấp lớp tiện ích phổ biến tất mô đun cốt lõi phần bổ sung sử dụng Một số lớp tiện ích gồm có Assert, FileCopyUtils, XmlUtils, StringUtils, FileUtils, v.v Ví dụ, bạn muốn chép nội dung tệp vào tệp khác, bạn sử dụng tiện ích FileCopyUtils để làm việc cho bạn Metadata (Siêu liệu) — Mơ đun org.springframework.roo.metadata cung cấp giao diện nhà cung cấp dịch vụ siêu liệu việc thực gồm có đăng ký phụ thuộc lưu trữ nhớ đệm File monitor (Giám sát tệp) — Mô đun org.springframework.roo.file.monitor xuất kiện sau phát thay đổi hệ thống tệp (cách thực mặc định sử dụng thăm dị đĩa có mở rộng tự động) File undo (Hoàn lại tệp) — Mơ đun org.springframework.roo.file.undo cung cấp phương tiện hồn lại tệp để sử dụng theo trình quản lý quy trình Project (Dự án) — Mô đun org.springframework.roo.project trừu tượng hóa hệ thống xây dựng dự án phía người dùng cuối điển Apache Maven Apache Ant Process manager (Trình quản lý quy trình) — Mơ đun org.springframework.roo.process.manager cung cấp trừu tượng hóa hệ thống tệp như-ACID gồm có khơi phục đĩa đồng hóa q trình Classpath (Đường dẫn lớp) — Mơ đun org.springframework.roo.classpath thực phân tích cú pháp cú pháp trừu tượng kết buộc kiểu đơn vị biên dịch Java AspectJ Các thành phần cốt lõi Spring Roo: Spring Roo cung cấp tất chức thông qua phần bổ sung Các phần bổ sung kèm theo Roo V1.1.3 là:  Add-On Creator (Bộ tạo phần bổ sung) — Phần bổ sung org.springframework.roo.addon.creator cho phép dễ dàng tạo phần bổ sung Roo bên thứ ba                 Backup (Sao lưu) — Phần bổ sung org.springframework.roo.addon.backup cho phép thực lưu tệp ZIP cách gõ backup Cloud Foundry (Xưởng tạo mẫu đám mây) — Phần bổ sung org.springframework.roo.addon.cloud.foundry cung cấp hỗ trợ cho VMware Cloud Foundry (Xưởng tạo mẫu đám mây VMware) Configurable (Có thể cấu hình) — Phần bổ sung org.springframework.roo.addon.configurable cung cấp hỗ trợ để đưa vào thích @Configurable Spring thơng qua ITD (Intertype Declaration - Khai báo kiểu) AspectJ Database reverse engineering (Kỹ thuật đảo ngược sở liệu) — Phần bổ sung org.springframework.roo.addon.dbre cung cấp hỗ trợ cho kỹ thuật đảo ngược gia tăng sở liệu có Data on Demand (Dữ liệu theo yêu cầu) — Phần bổ sung org.springframework.roo.addon.dod cung cấp hỗ trợ để tạo tự động liệu ví dụ mẫu thường dùng cho kiểm tra tích hợp Email (Thư điện tử) — Phần bổ sung org.springframework.roo.addon.email cung cấp hỗ trợ để tích hợp cấu hình hỗ trợ thư điện tử Spring dự án đích Entity (Thực thể) — Phần bổ sung org.springframework.roo.addon.entity cung cấp hỗ trợ rộng rãi để bảo trì tự động lớp @Entity Java Persistence API (API Tồn lâu bền Java) Dynamic Finder (Bộ dị tìm động) — Phần bổ sung org.springframework.roo.addon.finder tạo dị tìm ngơn ngữ truy vấn JPA tương thích hồn tồn với mã an tồn-kiểu Git — Phần bổ sung org.springframework.roo.addon.git cung cấp hỗ trợ để tích hợp GIT dự án Mỗi lệnh thực thành công cam kết tự động với kho lưu trữ GIT cục GWT (Bộ công cụ Web Google) — Phần bổ sung org.springframework.roo.addon.gwt cung cấp hỗ trợ để dựng giao diện người dùng (UI) cách sử dụng GWT (Google Web Toolkit) JavaBean — Phần bổ sung org.springframework.roo.addon.javabean tự động trì getter/các setter JavaBean cho lớp với thích @RooJavaBean JDBC (Kết nối sở liệu Java) — Phần bổ sung org.springframework.roo.addon.jdbc gói gọn việc truy cập tuân thủ-OSGi với trình điều khiển JDBC (Java DataBase Connectivity) phân phối bó khác (chủ yếu phần bổ sung khác sử dụng) JMS (Hệ thống thông báo Java) — Phần bổ sung org.springframework.roo.addon.jms cung cấp hỗ trợ để cấu hình thiết lập JMS (Java Messaging System) dự án đích JPA (API tồn lâu bền Java) — Phần bổ sung org.springframework.roo.addon.jpa cài đặt trình cung cấp JPA cụ thể thiết lập JDBC cho phù hợp JSON (Ký pháp đối tượng JavaScript) — Phần bổ sung org.springframework.roo.addon.json bổ sung phương thức hóa khơng hóa có liên quan đến JSON cho POJO (Plain old Java object – Đối tượng Java bình thường) Logging (Ghi nhật ký) — Phần bổ sung org.springframework.roo.addon.logging thiết lập Log4j, gồm có cấu hình mức-ghi nhật ký dựa vào-lệnh               Pluralization (Số nhiều) — Phần bổ sung org.springframework.roo.addon.plural cung cấp số nhiều danh từ (chủ yếu phần bổ sung khác sử dụng) Property Editor (Trình soạn thảo đặc tính) — Phần bổ sung org.springframework.roo.addon.property.editor quản lý trình soạn thảo đặc tính, Spring MVC (Model-View-Controller – Bộ điều khiển Khung nhìn-Mơ hình) u cầu Property File (Tệp đặc tính) — Phần bổ sung org.springframework.roo.addon.propfiles cung cấp hỗ trợ để quản lý tệp đặc tính dự án đích RooBot Client (Máy khách RooBot) — Phần bổ sung org.springframework.roo.addon.roobot.client cung cấp hỗ trợ để quản lý phần bổ sung thông qua máy chủ RooBot Security (Bảo mật) — Phần bổ sung org.springframework.roo.addon.security thiết lập Spring Security, gồm trang đăng nhập, lọc phụ thuộc Serializable (Có thể hóa) — Phần bổ sung org.springframework.roo.addon.serializable bổ sung hỗ trợ java.io.Serializable (chẳng hạn bảo trì UID – Mã định danh người dùng) cho kiểu Java cần thiết Solr cung cấp hỗ trợ để cấu hình tích hợp tính Apache Solr dự án đích — Phần bổ sung org.springframework.roo.addon.solr cung cấp hỗ trợ để cấu hình tích hợp tính Apache Solr dự án đích Integration Test (Kiểm tra tích hợp) — Phần bổ sung org.springframework.roo.addon.test tạo kiểm tra tích hợp JUnit cho thực thể dự án ToString — Phần bổ sung org.springframework.roo.addon.tostring tạo phương thức toString() hợp lệ cho lớp có thích @RooToString WebFlow — Phần bổ sung org.springframework.roo.addon.web.flow cung cấp hỗ trợ để cấu hình tích hợp tính Spring Web Flow (Luồng Web Spring) dự án đích Web MVC Controller (Bộ điều khiển MVC Web) — Phần bổ sung org.springframework.roo.addon.web.mvc.controller cung cấp hỗ trợ cho cấu hình tích hợp điều khiển MVC Spring dự án đích Web MVC Embedded (Web MVC nhúng) — Phần bổ sung org.springframework.roo.addon.web.mvc.embedded cung cấp phần mở rộng cho phần bổ sung MVC, cho phép bổ sung tính nhúng đồ, đoạn video, v.v vào trang web Web MVC JSP — Phần bổ sung org.springframework.roo.addon.web.mvc.jsp cấu hình tích hợp tính JSP MVC Spring dự án đích Selenium (Selen) — Phần bổ sung org.springframework.roo.addon.web.selenium cung cấp cấu hình tích hợp kiểm tra web Selen dự án đích Bây xem xét thành phần cốt lõi Spring Roo phần bổ sung Spring Roo cung cấp, viết phần bổ sung riêng Về đầu trang Môi trường thời gian chạy OSGi Spring Roo dựa OSGi, lý tưởng cho kiến trúc phần bổ sung Roo OSGi cung cấp sở hạ tầng tốt để phát triển ứng dụng hướng dịch vụ nhúng mơ đun Trình vỏ Roo sử dụng Apache Felix làm khung công tác thời gian chạy OSGi với SCR (Service Component Runtime - Thời gian chạy thành phần dịch vụ) để quản lý thành phần OBR (Repository Bundle OSGi – OSGi gói kho lưu trữ) cho độ phân giải gói Có sẵn lệnh OSGi khác trình vỏ Roo, mà bạn xem chúng cách gõ lệnh help osgi (Trợ giúp osgi), Liệt kê Liệt kê Lệnh help Roo với OSGi roo> help osgi * osgi find - Finds bundles by name * osgi framework command - Passes a command directly through to the Felix shell infrastructure * osgi headers - Display headers for a specific bundle * osgi install - Installs a bundle JAR from a given URL * osgi log - Displays the OSGi log information * osgi obr deploy - Deploys a specific OSGi Bundle Repository (OBR) bundle * osgi obr info - Displays information on a specific OSGi Bundle Repository (OBR) bundle * osgi obr list - Lists all available bundles from the OSGi Bundle Repository (OBR) system * osgi obr start - Starts a specific OSGi Bundle Repository (OBR) bundle * osgi obr url add - Adds a new OSGi Bundle Repository (OBR) repository file URL * osgi obr url list - Lists the currently-configured OSGi Bundle Repository (OBR) repository file URLs * osgi obr url refresh - Refreshes an existing OSGi Bundle Repository (OBR) repository file URL * osgi obr url remove - Removes an existing OSGi Bundle Repository (OBR) repository file URL * osgi ps - Displays OSGi bundle information * osgi resolve - Resolves a specific bundle ID * osgi scr config - Lists the current SCR configuration * osgi scr disable - Disables a specific SCR-defined component * osgi scr enable - Enables a specific SCR-defined component * osgi scr info - Lists information about a specific SCR-defined component * osgi scr list - Lists all SCR-defined components * osgi start - Starts a bundle JAR from a given URL * osgi uninstall - Uninstalls a specific bundle * osgi update - Updates a specific bundle * osgi version - Displays OSGi framework version Về đầu trang Lệnh tạo phần bổ sung Spring Roo Spring Roo gói chung với lệnh tạo phần bổ sung để tạo kiểu phần bổ sung khác Add-on Creator, trưng nhiều lệnh addon create (tạo phần bổ sung), phần bổ sung Roo Roo hỗ trợ bốn kiểu phần bổ sung: Phần bổ sung quốc tế — Phần bổ sung hỗ trợ dịch ngôn ngữ bổ sung cho ứng dụng Spring MVC dựng lên Roo (ví dụ, dịch bổ sung cho ngôn ngữ Hin-đi) Phần bổ sung đơn giản — Phần bổ sung đơn giản hỗ trợ bổ sung nhỏ cho dự án phụ thuộc cấu hình dự án hai (ví dụ, thực số sửa đổi pom.xml maven giống việc bổ sung số tệp lưu trữ Java (JAR) trình cắm thêm Maven) Phần bổ sung nâng cao — Phần bổ sung làm công việc nặng nhọc sử dụng để xây dựng phần bổ sung Spring Roo có đủ tính năng, có u cầu tạo mã Java (ví dụ, xây dựng phần bổ sung viết phương thức equals (bằng nhau) hashcode (mã băm) cho đối tượng miền bạn) Đã có phần bổ sung cộng đồng cho chức Phần bổ sung trình bao bọc — Phần bổ sung bao bọc tạo phẩm Maven để tạo gói tuân thủ-OSGi Phần bổ sung cần thiết phần bổ sung yêu cầu phụ thuộc để hoàn thành chức Ví dụ, phần bổ sung kỹ thuật đảo ngược sở liệu Spring Roo u cầu trình điều khiển JDBC Postgres để hồn thành nhiệm vụ mình, bạn bọc trình điều khiển JDBC Postgres nhờ sử dụng phần bổ sung Các phần bổ sung tạo lệnh để giảm nhẹ việc phát triển phần bổ sung Roo cách tạo phần bổ sung sau: httppgp:// Phiên 1.1 Spring Roo giới thiệu Pretty Good Privacy (PGP - Tính riêng tư tốt), cho phép người dùng xác định tin vào nhà phát triển để ký phần mềm tải kích hoạt trình vỏ Roo Trong thực tế, phát hành Roo tự ký theo PGP Một trình xử lý giao thức có tên httppgp:// giới thiệu Roo biết URL có sẵn chữ ký gỡ bỏ lớp bảo vệ PGP Điều cung cấp biểu mẫu bảo mật mở để giúp bảo vệ người dùng khỏi tải mã độc Những tiêu chuẩn cho phép sử dụng công cụ PHP độc lập để kiểm tra độc lập hoạt động Roo    Đã tích hợp với việc kiểm sốt mã nguồn SVN (Subversion - Phiên con) Google Code (Mã Google) Đã lưu kho lưu trữ Maven công khai tạo phần dự án mã Google Tương thích với RooBot, dịch vụ lưu trữ VMware để tạo mục nội dung quan trọng tệp OBR công khai Roo Các tệp OBR biểu diễn siêu liệu gói dựa XML Để phù hợp với RooBot, phần bổ sung là: Tuân thủ-OSGi Các tạo phẩm PGP ký với khóa cơng khai Đã đăng ký thông qua giao thức httppgp:// Khi sử dụng lệnh tạo phần bổ sung addon create Roo, bạn nhận tất tính đề cập trên, cấu hình tự động cho phần bổ sung bạn Điều chắn làm giảm thời gian tạo xuất phần bổ sung giới bên Trước bắt đầu viết phần bổ sung, chắn bạn có mơi trường chức Spring Roo Có thể tìm thấy hướng dẫn để cài đặt Spring Roo Phần loạt Về đầu trang Tôi muốn hỗ trợ ngôn ngữ Hin-đi (tạo phần bổ sung i18n) Khi bạn tạo ứng dụng web dựa MVC Spring cách sử dụng Spring Roo, bạn thêm hỗ trợ cho ngôn ngữ khác lệnh web mvc language (ngôn ngữ mvc web) Spring Roo hỗ trợ tiếng Anh, tiếng Đức, tiếng Tây Ban Nha, Ý, Hà Lan Thụy Điển, dùng Hỗ trợ quốc tế cung cấp phần bổ sung Web MVC JSP (Web MVC JavaServer Pages - Các trang JavaServer MVC web), kích hoạt sau bạn có tệp JSPX thư mục webapp Các tệp JSPX lệnh trình điều khiển tạo lệnh chuyển đổi ứng dụng dựa vào JAR đơn giản thành ứng dụng web MVC Spring Là người Ấn Độ, muốn bổ sung hỗ trợ tiếng Hin-đi ứng dụng web Spring Roo cung cấp lệnh addon create i18n, cung cấp phần mở rộng cho lệnh web mvc install language (ngôn ngữ cài đặt mvc web) để bổ sung hỗ trợ cho ngôn ngữ Hin-đi Điều mà địi hỏi dịch tệp messages.properties theo ngôn ngữ dự kiến Khi Spring Roo tạo ứng dụng web MVC Spring, tạo hai tệp đặc tính: application.properties messages.properties Tệp application.properties chứa thuộc tính đặc trưng-ứng dụng, tên ứng dụng Tệp messages.properties chứa đặc tính, khơng đặc trưng cho ứng dụng nào, thơng báo "Bạn có chắn muốn xóa mục khơng?" bạn nhấn vào nút xóa thơng báo đăng nhập, đăng xuất, v.v Vì thế, bạn viết phần bổ sung i18n, bạn phải cung cấp dịch cho tệp messages.properties Bây bàn hỗ trợ quốc tế mặc định Spring Roo, viết phần bổ sung i18n để bổ sung hỗ trợ ngôn ngữ Hin-đi Tôi hướng dẫn cách bạn thiết lập dự án dựa theo mã Google, viết phần bổ sung cách sử dụng lệnh, xuất phát hành giới bên ngoài, cuối đăng ký với dịch vụ RooBot Việc đăng ký với dịch vụ RooBot quan trọng điều cho phép RooBot tạo mục phần bổ sung bạn hiển thị nhà phát triển khác tìm kiếm cách sử dụng lệnh addon search (tìm kiếm phần bổ sung) Thiết lập dự án Tài liệu hướng dẫn Spring Roo giải thích rõ việc thiết lập dự án bạn kho lưu trữ Maven dựa mã Google, tơi khơng nhắc lại Tơi lưu ý sử dụng tên dự án "roo-hind-addon." Tạo phần bổ sung i18n Một bạn thiết lập dự án, bạn có thư mục rỗng có tên roo-hindi-addon (phần bổ sung-tiếng hin đi-Roo) Đi vào thư mục gõ lệnh roo Khi trình vỏ, gõ lệnh addon create i18n Nếu ấn phím tab, bạn thấy lệnh có bảy thuộc tính Trong số bảy thuộc tính này, ba thuộc tính bắt buộc: topLevelPackage (gói mức cao phần bổ sung mới), locale (các chữ viết tắt tên địa phương "it" cho nước Ý messageBundle (đường dẫn đủ điều kiện đến tệp message_xx.properties, xx tên địa phương) Bốn thuộc tính khác tùy chọn: language (tên đầy đủ ngôn ngữ), flagGraphic (đường dẫn đầy đủ đến tệp xx.png, xx tên cờ), description (mô tả phần bổ sung) projectName (tên dự án (nếu khơng cung cấp, sử dụng tên gói mức cao nhất)) Tôi đề nghị bạn sử dụng thuộc tính projectName bảo đảm giá trị tên dự án lưu trữ dựa theo mã Google Vì vậy, trường hợp chúng ta, projectName roo-hindi-addon Trong số thuộc tính đề cập trên, quan trọng messageBundle, rõ tệp messages.properties dịch Để dịch tệp messages.properties sang ngôn ngữ Hin-đi, tùy chọn dễ sử dụng dịch vụ Google translate, (Phiên dịch Google), chuyển đổi đặc tính theo một, sau viết chúng vào tệp messages_hi.properties Tuy nhiên, dịch vụ khơng làm việc trường hợp tệp đặc tính Java sử dụng tiêu chuẩn mã hóa ISO-8859-1, khơng hỗ trợ ký tự Hin-đi Để khắc phục vấn đề này, tơi sử dụng trình cắm thêm Eclipse tên Eclipse ResourceBundle Editor (trình soạn thảo gói tài nguyên Eclipse), cho phép bạn chuyển đổi tạo gói tài ngun cho ngơn ngữ khác Bạn cài đặt cách sử dụng trang web cập nhật http://www.nightlabs.de/updatesites/development/ Việc chuyển đổi tệp messages.properties sang tệp messages_hi.properties không nằm phạm vi Trình cắm thêm Editor ResourceBundle dễ sử dụng Xin lưu ý ký tự ngơn ngữ hỗ trợ, khơng cần sử dụng trình soạn thảo ResourceBundle Tệp messages_hi.properties trơng giống Liệt kê Liệt kê Tệp messages_hi.properties ví dụ mẫu button_cancel = \u0930\u0926\u094D\u0926 button_end = \u0905\u0902\u0924 button_find = \u0916\u094B\u091C\u0947\u0902 button_home = \u0918\u0930 Xem toàn tệp Một bạn có tệp messages_hi.properties dịch, bạn sẵn sàng để tạo phần bổ sung cách cần gõ lệnh Bạn tạo phần bổ sung tiếng Hin-đi cách gõ lệnh từ Liệt kê vào trình vỏ Roo Liệt kê Lệnh để tạo phần bổ sung tiếng Hin-đi addon create i18n locale hi topLevelPackage org.xebia.roo.addon.i18n.hindi messageBundle \ language hindi projectName roo-hindi-addon flagGraphic Liệt kê cho thấy tạo phẩm lệnh addon create i18n tạo Liệt kê Các tạo phẩm tạo Created ROOT/pom.xml Created ROOT/readme.txt Created ROOT/legal Created ROOT/legal/LICENSE.TXT Created SRC_MAIN_JAVA Created SRC_MAIN_RESOURCES Created SRC_TEST_JAVA Created SRC_TEST_RESOURCES Created SRC_MAIN_WEBAPP Created SRC_MAIN_RESOURCES/META-INF/spring Created ROOT/src/main/assembly Created ROOT/src/main/assembly/assembly.xml Created SRC_MAIN_RESOURCES/org/xebia/roo/addon/i18n/hindi Created SRC_MAIN_RESOURCES/org/xebia/roo/addon/i18n/hindi/messages_hi.properties Created SRC_MAIN_RESOURCES/org/xebia/roo/addon/i18n/hindi/hi.png Created SRC_MAIN_JAVA/org/xebia/roo/addon/i18n/hindi Created SRC_MAIN_JAVA/org/xebia/roo/addon/i18n/hindi/HindiLanguage.java Lệnh tạo dự án Maven nhập vào Eclipse (với m2eclipse) Bộ công cụ SpringSource thông qua File > Import > Maven > Existing Maven projects Bạn khơng cần nhập dự án không cần sửa đổi phần bổ sung Bây cài đặt phần bổ sung này, sử dụng dự án xuất giới bên ngồi Nhưng trước tiên, bàn số tạo phẩm để hiểu rõ mã tạo ra:   pom.xml — Tạo phẩm cấu hình dự án Maven tiêu chuẩn Pom.xml tạo có nhiều trình cắm thêm cấu hình sẵn, thực công việc liên quan để ký tạo phẩm PGP, phát hành phần bổ sung trình cắm thêm phát hành Maven tạo gói OSGi trình cắm thêm gói Maven Nó bổ sung phụ thuộc OSGi Felix vào dự án, mà phụ thuộc cần cho phần bổ sung để chạy bên trình vỏ Roo assembly.xml — Tạo phẩm định nghĩa cấu hình trình cắm thêm lắp ráp Maven sử dụng để đóng gói phần bổ sung    messages_hi.properties — Tạo phẩm tệp bó thơng báo mà cung cấp lúc tạo phần bổ sung, chép vào thư mục tài nguyên hi.png — Tạo phẩm tệp PNG cờ mà cung cấp tạo phần bổ sung, chép vào thư mục tài nguyên HindiLanguage.java — Tạo phẩm tệp Java phần bổ sung tạo ra, sử dụng để thu nhận thơng tin tương ứng với ngơn ngữ cụ thể Ví dụ, cung cấp tên địa phương, tệp tài nguyên gói thơng báo, v.v Thêm hỗ trợ tiếng Hin-đi vào ứng dụng Bây cho bạn thấy cách bạn thêm hỗ trợ tiếng Hin-đi vào ứng dụng cách sử dụng phần bổ sung mà vừa tạo ra: Thốt khỏi trình vỏ Roo chạy lệnh mvn clean install Trong trình xây dựng, lệnh yêu cầu cụm từ mật GPG bạn Sau xây dựng phần bổ sung Roo, mở dòng lệnh tạo thư mục có tên i18n-hindi-client (máy khách-tiếng Hin-đi-i18n) Chúng ta tạo máy khách đơn giản cho phần bổ sung Vào thư mục i18n-hindi-client gõ lệnh roo Thực lệnh sau trình vỏ Roo Việc tạo ứng dụng web MVC đơn giản Spring Liệt kê Các lệnh Roo để tạo ứng dụng web MVC project topLevelPackage com.shekhar.roo.i18n.client \ projectName i18n-hindi-client persistence setup provider HIBERNATE database HYPERSONIC_IN_MEMORY entity class ~.domain.MyUser field string fieldName name notNull controller all package ~.web Gõ lệnh nhấn phím tab: web mvc language code de en es it nl sv Bạn không thấy hỗ trợ ngôn ngữ Hin-đi đâu Điều chưa cài đặt phần bổ sung tiếng Hin-đi Để cài đặt phần bổ sung này, gõ: osgi start url file:////org.xebia.roo.addon.i18n.hindi-0.1.0.BUILD-SNAPSHOT.jar Chúng ta cần thực thiết lập dự án theo cách tương tự làm với phần bổ sung quốc tế Tôi đặt tên dự án "spring-roo-addon-jamon" Tạo phần bổ sung đơn giản Một bạn thiết lập dự án này, bạn có thư mục có tên spring-roo-addon-jamon với thư mục svn Chuyển vào thư mục spring-roo-addon-jamon khởi động trình vỏ Spring Roo Sau đó, gõ lệnh sau: addon create simple topLevelPackage org.xebia.roo.addon.jamon \ projectName spring-roo-addon-jamon Thế xong! Phần bổ sung tạo Cài đặt phần bổ sung tạo Bạn cài đặt phần bổ sung lệnh sau: osgi start url file:///org.xebia.roo.addon.jamon-0.1.0.BUILD-SNAPSHOT.jar Một bạn cài đặt phần bổ sung này, tạo máy khách đơn giản tạo cho phần bổ sung i18n để kiểm tra Phần bổ sung tạo đưa hai lệnh: Lệnh say hello, lệnh in thông báo chào mừng trình vỏ Roo Lệnh ln có sẵn bạn gõ lúc trình vỏ Roo chạy Lệnh web mvc install tags thay thẻ MVC mặc định tạo bạn dựng lên ứng dụng web Lệnh có sẵn bạn tạo ứng dụng web Xem xét mã tạo Bây bạn kiểm tra phần bổ sung, xem tệp phần bổ sung tạo ra, Liệt kê Liệt kê Các tệp tạo cho spring-roo-addon-jamon Created Created Created Created Created Created Created Created Created ROOT/pom.xml ROOT/readme.txt ROOT/legal ROOT/legal/LICENSE.TXT SRC_MAIN_JAVA SRC_MAIN_RESOURCES SRC_TEST_JAVA SRC_TEST_RESOURCES SRC_MAIN_WEBAPP Created Created Created Created Created Created Created Created Created Created Created SRC_MAIN_RESOURCES/META-INF/spring SRC_MAIN_JAVA/com/shekhar/roo/addon/jamon SRC_MAIN_JAVA/com/shekhar/roo/addon/jamon/JamonCommands.java SRC_MAIN_JAVA/com/shekhar/roo/addon/jamon/JamonOperations.java SRC_MAIN_JAVA/com/shekhar/roo/addon/jamon/JamonOperationsImpl.java SRC_MAIN_JAVA/com/shekhar/roo/addon/jamon/JamonPropertyName.java ROOT/src/main/assembly ROOT/src/main/assembly/assembly.xml SRC_MAIN_RESOURCES/com/shekhar/roo/addon/jamon SRC_MAIN_RESOURCES/com/shekhar/roo/addon/jamon/info.tagx SRC_MAIN_RESOURCES/com/shekhar/roo/addon/jamon/show.tagx Các tạo phẩm pom.xml, assembly.xml, LICENSE.TXT readme.txt giống tạo phẩm phần bổ sung i18n tạo Chúng ta thảo luận chúng trên, tơi khơng nói lại chúng Các tạo phẩm quan tâm nhiều JamonCommands, JamonOperations, JamonOperationsImpl JamonPropertyName Chúng ta bàn chúng để hiểu mã tạo lệnh phần bổ sung đơn giản JamonCommands.java:JamonCommands — Đây lớp, thực giao diện đánh dấu có tên CommandMarker trưng hai lệnh, say hello web mvc install tags, Liệt kê Liệt kê Mã tạo từ JamonCommands.java:JamonCommands @Component @Service public class JamonCommands implements CommandMarker { @Reference private JamonOperations operations; @Reference private StaticFieldConverter staticFieldConverter; protected void activate(ComponentContext context) { staticFieldConverter.add(JamonPropertyName.class); } protected void deactivate(ComponentContext context) { staticFieldConverter.remove(JamonPropertyName.class); } @CliAvailabilityIndicator("say hello") public boolean isSayHelloAvailable() { return true; } @CliCommand(value = "say hello", help = "Prints welcome message to the Roo shell") public void sayHello(@CliOption(key = "name", mandatory = true, help = "State your name") String name, @CliOption(key = "contryOfOrigin", mandatory = false, help = "Country of origin") JamonPropertyName country) { log.info("Welcome " + name + "!"); log.warning("Country of origin: " + (country == null ? \ JamonPropertyName.NOT_SPECIFIED.getPropertyName() : country.getPropertyName())); log.severe("It seems you are a running JDK " + operations.getProperty("java.version")); log.info("You can use the default JDK logger anywhere in your" + " add-on to send messages to the Roo shell"); } @CliAvailabilityIndicator("web mvc install tags") public boolean isInstallTagsCommandAvailable() { return operations.isInstallTagsCommandAvailable(); } @CliCommand(value = "web mvc install tags", help="Replace default Roo MVC tags used for scaffolding") public void installTags() { operations.installTags(); } } Tôi gỡ bỏ tất nhận xét tạo mã tạo để giảm dài dòng mã Chúng ta xem xét thành viên quan trọng lớp này: a CommandMarker — Tất lớp lệnh cần thực giao diện CommandMarker cần thích thích @Component @Service cho chúng đăng ký lệnh chúng trở nên có sẵn trình vỏ Roo Các trường thích @Reference phụ thuộc lớp JamonCommands thùng chứa OSGi Roo bên chèn vào Tất lớp thích @Component @Service annotations chèn vào phần bổ sung khác b Các phương thức Activate (Kích hoạt) Deactivate (Khơng kích hoạt) — Các phương thức activate deactivate phương thức gọi bạn cài đặt phần bổ sung cách sử dụng lệnh addon install loại bỏ phần bổ sung cách sử dụng lệnh addon remove Các phương thức cho phép bạn móc nối vào vòng đời phần bổ sung, thùng chứa OSGi Roo bên quản lý c Các phương thức thích @CliAvailabilityIndicator — Các phương thức thích @CliAvailabilityIndicator phương thức giúp ẩn giấu lệnh chúng khơng có sẵn Ví dụ, lệnh security setup (thiết lập bảo mật), để cài đặt Spring Security vào dự án, khơng nhìn thấy dự án trở thành ứng dụng web Lệnh khơng địi hỏi bạn cần có phương thức vậy, chúng có ích chúng không cho phép người dùng thực lệnh mà khơng bảo đảm thời điểm Ví dụ, việc thực lệnh security setup trước người dùng có ứng dụng web chẳng có ý nghĩa d Các phương thức thích @CliCommand — Các phương thức thích @CliCommand đăng ký lệnh với trình vỏ Roo Chú thích @CliCommand có hai thuộc tính: value (giá trị), định nghĩa tên lệnh help (trợ giúp), định nghĩa thông báo trợ giúp hiển thị bạn gõ lệnh help Mỗi lệnh định nghĩa thuộc tính bắt buộc khơng bắt buộc cách sử dụng thích @CliOption đưa phần lệnh Ví dụ, lệnh say hello có thuộc tính bắt buộc name thuộc tính khơng bắt buộc country JamonOperationsImpl.java — Các lớp lệnh cần thực số hoạt động thực lệnh Các hoạt động lớp hoạt động thực JamonOperationsImpl lớp hoạt động có trách nhiệm thực công việc thực tế, giống việc bổ sung phụ thuộc vào pom.xml chép tài nguyên tới vị trí mong muốn Lớp JamonOperationsImpl thực hoạt động cách sử dụng dịch vụ cốt lõi khung công tác Spring Roo cung cấp Ví dụ, để thêm phụ thuộc, sử dụng giao diện ProjectOperations Để chép tệp, sử dụng giao diện FileManager Chúng ta xem xét mã dùng cho lớp JamonOperationsImpl (xem Liệt kê 10) để hiểu rõ phần bổ sung Roo Liệt kê 10 JamonOpertionsImpl @Component @Service public class JamonOperationsImpl implements JamonOperations { private static final char SEPARATOR = File.separatorChar; @Reference private FileManager fileManager; @Reference private ProjectOperations projectOperations; public boolean isInstallTagsCommandAvailable() { return projectOperations.isProjectAvailable() && fileManager.exists(projectOperations.getProjectMetadata() getPathResolver().getIdentifier(Path.SRC_MAIN_WEBAPP, "WEB-INF" + SEPARATOR + "tags")); } public String getProperty(String propertyName) { Assert.hasText(propertyName, "Property name required"); return System.getProperty(propertyName); } public void installTags() { PathResolver pathResolver = projectOperations.getProjectMetadata().getPathResolver(); createOrReplaceFile(pathResolver.getIdentifier( Path.SRC_MAIN_WEBAPP, "WEB-INF" + SEPARATOR + "tags" + SEPARATOR + "util"), "info.tagx"); createOrReplaceFile(pathResolver.getIdentifier( Path.SRC_MAIN_WEBAPP, "WEB-INF" + SEPARATOR + "tags" + SEPARATOR + "form"), "show.tagx"); } private void createOrReplaceFile(String path, String fileName) { String targetFile = path + SEPARATOR + fileName; MutableFile mutableFile = fileManager.exists(targetFile) ? fileManager.updateFile(targetFile) : fileManager.createFile(targetFile); try { FileCopyUtils.copy(TemplateUtils.getTemplate(getClass(), fileName), mutableFile.getOutputStream()); } catch (IOException e) { throw new IllegalStateException(e); } } } Lớp JamonOperationsImpl sử dụng dịch vụ: isInstallTagsCommandAvailable kiểm tra xem lệnh có sẵn chưa installTags cài đặt thẻ vào dự án đích Để thực hoạt động này, lớp JamonOperationsImpl sử dụng số dịch vụ tiện ích cốt lõi Spring Roo: Lớp ProjectOperations : JamonOperationsImpl sử dụng dịch vụ ProjectOperations để kiểm tra xem dự án có sẵn chưa để nhận đường dẫn thư mục tags (các thẻ) Lớp FileManager : JamonOperationsImpl sử dụng dịch vụ FileManager để kiểm tra xem tệp có tồn đường dẫn cụ thể khơng để nhận cập nhật tạo MutableFile MutableFile (tệp thay đổi được) lớp đặc trưng Roo biểu diễn trình xử lý cho tệp sửa đổi Lớp tiện ích TemplateUtils : TemplateUtils sử dụng để thu InputStream cho tệp khuôn mẫu (info.tagx show.tagx) gói phần bổ sung Lớp tiện ích FileCopyUtils : FileCopyUtils sử dụng để chép khuôn mẫu (của TemplateUtils) đến MutableFile (của FileManager) Sửa đổi phần bổ sung để đáp ứng yêu cầu Trong phần phần bổ sung đơn giản, thảo luận hai yêu cầu mà phải đáp ứng cho phần bổ sung cấu hình JAMon ứng dụng web MVC Spring Các yêu cầu là: Bổ sung tệp lưu trữ Java (JAR) JAMon vào pom.xml bạn Định nghĩa bean JamonPerformanceMonitorInterceptor tệp ngữ cảnh ứng dụng Để đáp ứng yêu cầu này, thực thay đổi lớp JamonCommands để hỗ trợ lệnh jamon setup Sau đó, bổ sung hoạt động tương ứng với lệnh jamon setup để thực công việc thực tế để đáp ứng yêu cầu Lớp JamonCommands — Lớp JamonCommands có hai phương thức: isInstallJamon để kiểm tra xem lệnh jamon setup có sẵn chưa installJamon để cài đặt JAMon thực lệnh jamon setup (Liệt kê 11.) Liệt kê 11 Mã cho JamonCommands @Component @Service public class JamonCommands implements CommandMarker { private Logger log = Logger.getLogger(getClass().getName()); @Reference private JamonOperations operations; @CliAvailabilityIndicator("jamon setup") public boolean isInstallJamon() { return operations.isInstallJamonAvailable(); } @CliCommand(value = "jamon setup", help = "Setup Jamon into your project") public void installJamon() { operations.installJamon(); } } Đây tất thứ mà cần lớp JamonCommands Nó cần trưng lệnh jamon setup phần cơng việc cịn lại ủy thác cho lớp JamonOperationsImpl (Liệt kê 12.) Liệt kê 12 Mã cho JamonOperationsImpl JamonOperationsImpl JamonOperationsImpl need to implement two methods – \ isInstallJamonAvailable() and installJamon() The isinstallJamonAvailable() method returns a boolean indicating whether command is available at this location or not I want to enable JAMon only for the web applications so we need to perform the check whether the project is a web application or not To that we will write the code as shown below public boolean isInstallJamonAvailable() { return projectOperations.isProjectAvailable() && fileManager.exists(projectOperations.getPathResolver() getIdentifier(Path.SRC_MAIN_WEBAPP, "/WEBINF/web.xml")); } Mã hiển thị Liệt kê 12 sử dụng dịch vụ ProjectOperations để kiểm tra xem dự án có sẵn vị trí chưa để lấy đường dẫn tệp web.xml (tệp web.xml tồn cho ứng dụng web) Dịch vụ FileManager sử dụng để kiểm tra xem tệp web.xml có tồn tại vị trí theo quy định ProjectOperations không Phương thức thứ hai mà cần thực installJamon(), bổ sung phụ thuộc JAMon vào tệp pom.xml thêm định nghĩa bean cho webmvc-config.xml Trước viết mã cho phương thức này, phải tạo tệp XML có tên configuration.xml bên thư mục src/main/resources/org/xebia/roo/addon/jamon Cấu trúc thư mục, org/xebia/roo/addon/jamon, giống cấu trúc gói phần bổ sung Roo bạn Tệp configuration.xml định nghĩa phiên JAMon phụ thuộc tệp lưu trữ Java (JAR) JAMon, Liệt kê 13 Liệt kê 13 Các nội dung tệp configuration.xml 2.4 com.jamonapi jamon ${jamon.version} Hãy viết mã để bổ sung phụ thuộc vào tệp pom.xml, Liệt kê 14 Liệt kê 14 Các nội dung tệp pom.xml public void installJamon() { Element configuration = XmlUtils.getConfiguration(getClass()); updatePomProperties(configuration); updateDependencies(configuration); } private void updatePomProperties(Element configuration) { List properties = \ XmlUtils.findElements("/configuration/jamon/properties/*" , configuration); for (Element property : properties) { projectOperations.addProperty(new Property(property)); } } private void updateDependencies(Element configuration) { List dependencies = new ArrayList(); List jamonDependencies = XmlUtils.findElements( "/configuration/jamon/dependencies/dependency", configuration); for (Element dependencyElement : jamonDependencies) { dependencies.add(new Dependency(dependencyElement)); } projectOperations.addDependencies(dependencies); } Đây chế tiêu chuẩn để bổ sung phụ thuộc vào tệp pom.xml bạn thấy sử dụng hầu hết phần bổ sung Roo Mã hiển thị Liệt kê 14 tự giải thích sử dụng lớp tiện ích Spring Roo, XmlUtils, để đọc nội dung từ tệp configuration.xml sau sử dụng dịch vụ ProjectOperations để cập nhật tệp pom.xml Một bổ sung phụ thuộc pom.xml, cần tạo cấu hình Spring riêng biệt, web-jamon-config.xml, chứa định nghĩa bean cho JamonPerformanceMonitorInterceptor Liệt kê 15 Các nội dung web-jamon-config.xml Trong tệp web-jamon-config.xml hiển thị Liệt kê 15, cấu hình tất thứ cần thiết cho JAMon ứng dụng dựa Spring Điều mà không rõ tên bean để giám sát Bộ tạo mã khơng thể dự đốn điều này, đó, để lại cho nhà phát triển phần bổ sung quy định Bây cần viết mã chép tệp web-jamon-config.xml vào thư mục WEB_INF/spring, nơi lưu trữ tệp webmvc-config.xml mã cho câu lệnh add import tệp webmvc-config.xml để nhập tệp web jamon-config.xml (Liệt kê 16.) Liệt kê 16 Mã để xử lý manipulate pom.xml public void installJamon() { // update pom.xml code PathResolver pathResolver = projectOperations.getProjectMetadata().getPathResolver(); String resolvedSpringConfigPath = pathResolver.getIdentifier(Path.SRC_MAIN_WEBAPP, "/WEB-INF/spring"); if (fileManager.exists(resolvedSpringConfigPath + "/web-jamonconfig.xml")) { return; } copyTemplate("web-jamon-config.xml", resolvedSpringConfigPath); String webMvcConfigPath = resolvedSpringConfigPath + "/webmvcconfig.xml"; new XmlTemplate(fileManager).update(webMvcConfigPath, new DomElementCallback() { public boolean doWithElement(Document document, Element root) { if (null == XmlUtils.findFirstElement\ ("/beans/import[@resource='web-jamon-config.xml']", root)) { Element element = document.createElement("import"); element.setAttribute("resource", "web-jamonconfig.xml"); root.appendChild(element); return true; } return false; } }); } private void copyTemplate(String templateFileName, String resolvedTargetDirectoryPath) { try { FileCopyUtils.copy(TemplateUtils.getTemplate(getClass(), templateFileName), fileManager.createFile( resolvedTargetDirectoryPath + "/" + templateFileName).getOutputStream()); } catch (IOException e) { throw new IllegalStateException( "Encountered an error during copying of resources for Jamon addon.", e); } } Lớp XmlTemplate sử dụng đến từ phần bổ sung luồng web Spring Vì vậy, bạn cần thêm phụ thuộc cho phần bổ sung luồng web phần bổ sung bạn (Liệt kê 17.) Liệt kê 17 Thêm phụ thuộc cho phần bổ sung luồng web org.springframework.roo org.springframework.roo.addon.web.flow ${roo.version} bundle Trong Liệt kê 17, roo.version phiên Roo mà bạn sử dụng Điều cuối cần làm phần bổ sung cấu hình ghi nhật ký dự án thiết lập mức ghi nhật ký để theo dõi Điều thực cách sử dụng LoggingOperations, lớp hoạt động cho phần bổ sung log4j Để sử dụng lớp này, trước tiên cần thêm phụ thuộc phần bổ sung ghi nhật ký vào tệp pom.xml, Liệt kê 18 Liệt kê 18 Mã XML để thêm phụ thuộc cho phần bổ sung ghi nhật ký org.springframework.roo org.springframework.roo.addon.logging ${roo.version} bundle Sau thêm phụ thuộc vào pom.xml, thêm LoggingOperation vào lớp JamonOperationsImpl dòng sau: @Reference private LoggingOperations loggingOperations; Tiếp theo, thêm dòng sau vào phương thức installJamon: loggingOperations.configureLogging(LogLevel.TRACE, LoggerPackage.PROJECT); Đó tất mã mà cần viết cho phần bổ sung Toàn mã cho lớp JamonOperationsImpl hiển thị Liệt kê 19 Liệt kê 19 Mã hoàn thành cho lớp JamonOperationsImpl @Component @Service public class JamonOperationsImpl implements JamonOperations { @Reference private FileManager fileManager; @Reference private ProjectOperations projectOperations; @Reference private LoggingOperations loggingOperations; public boolean isInstallJamonAvailable() { return projectOperations.isProjectAvailable() && fileManager.exists(projectOperations.getPathResolver() getIdentifier(Path.SRC_MAIN_WEBAPP,"/WEB-INF/web.xml")); } public void installJamon() { Element configuration = XmlUtils.getConfiguration(getClass()); updatePomProperties(configuration); updateDependencies(configuration); PathResolver pathResolver = projectOperations.getProjectMetadata().getPathResolver(); String resolvedSpringConfigPath = pathResolver.getIdentifier(Path.SRC_MAIN_WEBAPP, "/WEB-INF/spring"); if (fileManager.exists(resolvedSpringConfigPath + "/web-jamon-config.xml")) { return; } copyTemplate("web-jamon-config.xml", resolvedSpringConfigPath); String webMvcConfigPath = resolvedSpringConfigPath + "/webmvc-config.xml"; new XmlTemplate(fileManager).update(webMvcConfigPath, new DomElementCallback() { public boolean doWithElement(Document document, Element root) { if (null == XmlUtils.findFirstElement( "/beans/import[@resource='web-jamon-config.xml']", root)) { Element element = document.createElement("import"); element.setAttribute("resource", "web-jamonconfig.xml"); root.appendChild(element); return true; } return false; } }); loggingOperations.configureLogging(LogLevel.TRACE, LoggerPackage.PROJECT); } private void copyTemplate(String templateFileName, String resolvedTargetDirectoryPath) { try { FileCopyUtils.copy( TemplateUtils.getTemplate(getClass(), templateFileName), fileManager.createFile(resolvedTargetDirectoryPath + "/" + templateFileName).getOutputStream()); } catch (IOException e) { throw new IllegalStateException( "Encountered an error during copying of resources for Jamon addon.", e); } } private void updatePomProperties(Element configuration) { List properties = XmlUtils findElements("/configuration/jamon/properties/*",configuration); for (Element property : properties) { projectOperations.addProperty(new Property(property)); } } private void updateDependencies(Element configuration) { List dependencies = new ArrayList(); List jamonDependencies = XmlUtils.findElements( "/configuration/jamon/dependencies/dependency", configuration); for (Element dependencyElement : jamonDependencies) { dependencies.add(new Dependency(dependencyElement)); } projectOperations.addDependencies(dependencies); } } Bạn tải tồn mã nguồn phần bổ sung từ kho lưu trữ mã Google Bây giờ, thêm hỗ trợ JAMon cho ứng dụng chúng ta, cách sử dụng phần bổ sung mà vừa tạo ra: Thốt khỏi trình vỏ roo chạy lệnh mvn clean install Trong q trình xây dựng, hỏi cụm từ mật GPG Sau xây dựng phần bổ sung Roo, mở dòng lệnh tạo thư mục có tên jamon-client Chúng ta tạo máy khách đơn giản cho phần bổ sung Chuyển tới thư mục jamon-client gõ lệnh roo để mở trình vỏ Roo Thực lệnh Liệt kê 20 trình vỏ Roo Điều tạo ứng dụng web MVC đơn giản Spring Liệt kê 20 Tạo ứng dụng web MVC đơn giản project topLevelPackage com.shekhar.roo.jamon.client projectName jamonclient persistence setup provider HIBERNATE database HYPERSONIC_IN_MEMORY entity class ~.domain.MyUser field string fieldName name notNull controller all package ~.web Để cài đặt phần bổ sung, gõ: osgi start url file:/// /org.xebia.roo.addon.jamon-0.1.0.BUILD-SNAPSHOT.jar Lệnh cài đặt kích hoạt phần bổ sung JAMon Bạn xem trạng thái phần bổ sung cách sử dụng lệnh osgi ps Gõ lệnh jamon setup bạn thấy JAMon cấu hình ứng dụng bạn Nếu bạn chạy ứng dụng bạn cách sử dụng lệnh mvn tomcat:run, bạn không thấy ghi nhật ký giao diện điều khiển bạn khơng cấu hình bean để giám sát Hãy cấu hình bean myUserController web-jamon-config.xml mã từ Liệt kê 21 Liệt kê 21 Cấu hình cho myUserController tệp web-jamon-config.xml myUserController Bây chạy ứng dụng cách sử dụng lệnh mvn tomcat:run bạn thấy ghi nhật ký JAMon giao diện điều khiển maven Một mẫu hiển thị Liệt kê 22 Liệt kê 22 Bản ghi nhật ký JAMon mẫu ví dụ TRACE MyUserController - JAMon performance statistics for method [MyUserController.populateMyUsers]: JAMon Label=MyUserController.populateMyUsers, Units=ms.: (LastValue=187.0, Hits=1.0, Avg=187.0, Total=187.0, Min=187.0, Max=187.0, Active=0.0, Avg Active=1.0, Max Active=1.0, First Access=Wed May 18 15:33:41 IST 2011, Last Access=Wed May 18 15:33:41 IST 2011) 10 Một bạn kiểm tra xem phần bổ sung có làm việc tốt hệ thống phát triển khơng, bạn đẩy vào dự án mã Google mà tạo Để xuất phần bổ sung giới bên ngoài, làm theo thủ tục tương tự dùng để xuất phần bổ sung i18n Tương tự vậy, để đăng ký phần bổ sung với RooBot, làm theo thủ tục đăng ký i18n ... tạo phần bổ sung Spring Roo Spring Roo gói chung với lệnh tạo phần bổ sung để tạo kiểu phần bổ sung khác Add-on Creator, trưng nhiều lệnh addon create (tạo phần bổ sung) , phần bổ sung Roo Roo... phần bổ sung: Phần bổ sung quốc tế — Phần bổ sung hỗ trợ dịch ngôn ngữ bổ sung cho ứng dụng Spring MVC dựng lên Roo (ví dụ, dịch bổ sung cho ngôn ngữ Hin-đi) Phần bổ sung đơn giản — Phần bổ sung. .. qua phần bổ sung Các phần bổ sung kèm theo Roo V1.1.3 là:  Add-On Creator (Bộ tạo phần bổ sung) — Phần bổ sung org.springframework .roo. addon.creator cho phép dễ dàng tạo phần bổ sung Roo bên

Ngày đăng: 11/05/2021, 04:32

Xem thêm:

w