لم يعد المشروع يتم الحفاظ عليه بنشاط ، يرجى الاطلاع على: نظام المبيعات 2.0 بدلاً من ذلك
هذا تطبيق ويب صغير جدًا تم استخدامه كعينة وهو لأغراض التوضيح الخالص.
git clone https://github.com/colinbut/sales-order-system.git
mvn clean package
... سوف يقوم بتجميع المصادر ، وتجميع ملف الحرب
انتقل إلى دليل التطبيق عبر الإنترنت وتنفيذ الأمر التالي:
mvn tomcat7:run-war
يستخدم المكون الإضافي Maven Tomcat7 لتشغيل التطبيق داخل حاوية ويب Apache Tomcat المضمنة
بمجرد تحميل التطبيق ، انتقل إلى:
http://localhost:8080/online-application/login
يمكن العثور على بعض بيانات اعتماد العينة التي تم تكوينها في ملف تكوين Application-security.xml الخاص بـ Spring.
mvn test
... سيؤدي ذلك إلى إجراء جميع اختبارات الوحدة داخل مجموعة الاختبارات
أو
من IDE الخاص بك ، فقط انتقل إلى فئة اختبار الوحدة وانقر على زر "تشغيل" IDE
mvn verify
... سيؤدي ذلك إلى تشغيل جميع اختبار التكامل داخل مجموعة الاختبارات.
أو
من IDE الخاص بك ، فقط انتقل إلى فئة اختبار التكامل وانقر على زر "تشغيل" IDE
[TBD]
استخدم Sonar (Sonarqube) لتشغيل تحليل جودة الرمز في المشروع. ملف سونار project.properties المقدم. ستحتاج إلى Sonarqube Server و Sonar Runner ، لذا تحتاج إلى تنزيلهما من موقع Sonarqube واتبع تعليمات التثبيت.
على افتراض أن السونار مثبت (مع عداء السونار على مسار البيئة) ، في CLI Run:
sonar-runner
من الممكن أيضًا تشغيل MySQL. تحتاج إلى تثبيت MySQL. قم بتنزيل من موقع MySQL واتبع تعليمات التثبيت.
uncomment أدناه كما هو محدد:
<!-- uncomment out for use with MySQL database -->
< bean id = " dataSource " class = " org.springframework.jdbc.datasource.DriverManagerDataSource " >
< property name = " driverClassName " value = " com.mysql.jdbc.Driver " />
< property name = " url " value = " jdbc:mysql://localhost:3306/sales_order_system " />
< property name = " username " value = " root " />
< property name = " password " value = " " />
</ bean >
< jdbc : initialize-database ignore-failures = " DROPS " >
< jdbc : script location = " file:src/main/resources/scripts/db-drop-tables.sql " />
< jdbc : script location = " file:src/main/resources/scripts/db-create.sql " />
</ jdbc : initialize-database >افتراض mongoDB مثبت على النظام. إذا لم يكن الأمر كذلك ، يمكنك تنزيله من موقع MongoDB واتبع تعليمات التثبيت.
بدء تشغيل خادم قاعدة بيانات MongoDB:
./mongod
افتح عميل قاعدة بيانات MongoDB:
./mongo
قم بتحميل ملف MongoDB JavaScript الذي يملأ بعض بيانات العينة
load("mongodb.js")
التطبيق هو مجرد تطبيق متجانس مبسط تم تصميمه مع عدة طبقات. باختصار ، تتم كتابة الواجهة الخلفية في Java والتي تتصل بقاعدة بيانات علائقية في الذاكرة الخلفية (HSQL). يمكن أيضًا الاتصال بقواعد البيانات العلائقية الأخرى (MySQL). يتم تنفيذ التطبيق من خلال إطار الربيع. يتم استخدام النمط المعماري للسيطرة على عرض النموذج (MVC) لفصل الواجهة الأمامية عن الواجهة الخلفية. يتم تحقيق ذلك بواسطة Spring Web MVC. سيتم بعد ذلك نشر هذا التطبيق على حاوية ويب مضمنة (Apache Tomcat).

الواجهة الأمامية هي بوضوح JSP مع القليل من JSTL هنا وهناك. تستخدم قواعد بيانات الهندباء أيضًا لتنفيذ الجداول في واجهة المستخدم. CSS الأساسية للتصميم. يوفر Bootstrap الإطار الأمامي لهذا الغرض.
[TBD]
هذا التطبيق بسيط للغاية. إنه تطبيق ويب يوفر حاليًا عمليات CRUD الأساسية. يُنظر إلى كل شيء التشغيل على أنه معاملة تجارية يتم تنفيذها من خلال الطبقات المختلفة. لذلك ، يتم استخدام نموذج مجال فقر الدم بدلاً من نموذج المجال الموجهة للكائنات النقية. هذا يكفي ومثالي لأنه في هذه اللحظة لا يوجد (إن وجدت) معالجة منطق الأعمال المعقدة المطلوبة.
تحديد حدود التطبيق وتحديد العمليات المتاحة من منظور تواصل طبقات العميل (الواجهة الأمامية). إنه يتضمن منطق أعمال التطبيق ، والتحكم في المعاملات والاستجابات التي تصنع COOR في تنفيذ عملياتها.
على سبيل المثال
@ Service ( "itemServiceImpl" )
@ Transactional
public class ItemServiceImpl implements ItemService {
@ Autowired
private ItemRepository itemRepository ;
...
}عرض موجه نحو الكائن لمخزن البيانات أسفله يوفر طبقة إضافية من التجريد (بيانات الربيع JPA) أمام إمكانيات الوصول إلى البيانات لنمط Mapper Data. يتم استخدام إطار تعيين الكائن العلائقي (السبات) لتحقيق هذا التأثير لرسم الاختلافات بين جداول قاعدة البيانات العلائقية ونموذج المجال. يقوم مدير كيان JPA بتغليف عنصر الوصول إلى البيانات (نمط كائن الوصول إلى البيانات).
على سبيل المثال من مستودع بيانات الربيع JPA
@ Repository
public interface ItemRepository extends JpaRepository < Item , Integer > {
}يتم إجراء دعم التعليق التوضيحي لـ Spring Framework (مسح المكون) للقيام بذلك مع الاستفادة من القدرات الأساسية لـ Spring Framework - حقن التبعية الذي يوفره حاوية التحكم (IOC).
@ Controller
public class OrderController {
private static final Logger logger = LoggerFactory . getLogger ( OrderController . class );
@ Autowired
@ Qualifier ( "orderServiceImpl" )
private OrderService orderService ;
@ Autowired
@ Qualifier ( "customerServiceImpl" )
private CustomerService customerService ;
@ Autowired
@ Qualifier ( "itemServiceImpl" )
private ItemService itemService ;
@ Autowired
@ Qualifier ( "orderFormValidator" )
private OrderFormValidator orderFormValidator ;مثال آخر من كائن نموذج العميل:
@ Entity
@ Table ( name = "customer" )
@ Getter
@ Setter
@ NoArgsConstructor
@ EqualsAndHashCode ( exclude = "orders" )
@ ToString
public class Customer {
@ Id
@ GeneratedValue ( strategy = GenerationType . IDENTITY )
@ Column ( name = "customer_id" )
private int customerId ;
@ NotNull ( message = "{error.null.firstname}" )
@ NotBlank ( message = "{error.blank.firstname}" )
@ NotEmpty ( message = "{error.empty.firstname}" )
@ Pattern ( regexp = "[a-zA-Z]*" , message = "{error.invalid.firstname}" )
@ Column ( name = "customer_firstname" , nullable = false , length = 50 )
private String firstName ;
@ NotNull ( message = "{error.null.lastname}" )
@ NotBlank ( message = "{error.blank.lastname}" )
@ NotEmpty ( message = "{error.empty.lastname}" )
@ Pattern ( regexp = "[a-zA-Z]*" , message = "{error.invalid.lastname}" )
@ Column ( name = "customer_lastname" , nullable = false , length = 50 )
private String lastName ;مشروع Lombok يستخدم لإنشاء getters/setters/tostring/equals و hashcode لإزالة رمز الغلاية
يتيح التطبيق ميزة تسجيل الدخول/تسجيل الدخول التي تم تنفيذها باستخدام الميزات الأساسية لوحدة أمان Spring من إطار Spring.
يظهر ملف تكوين الربيع التالي Application-security.xml تكوينات أمان المفتاح:
< beans : beans xmlns = " http://www.springframework.org/schema/security "
xmlns : beans = " 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
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.2.xsd " >
< http auto-config = " true " >
<!-- items -->
< intercept-url pattern = " /items " access = " ROLE_TEST_USER,ROLE_ADMIN " />
< intercept-url pattern = " /items/create " access = " ROLE_TEST_USER,ROLE_ADMIN " />
< intercept-url pattern = " /items/createItem " access = " ROLE_TEST_USER,ROLE_ADMIN " />
....
< form-login
login-page = " /login "
default-target-url = " /customers "
authentication-failure-url = " /login?error "
username-parameter = " username "
password-parameter = " password "
/>
< logout logout-success-url = " /login?logout " />
< csrf />
</ http >
< authentication-manager >
< authentication-provider >
< user-service >
<!-- hard coding application user credentials - switch to DB or LDAP -->
< user name = " testUser " password = " password " authorities = " ROLE_TEST_USER " />
< user name = " admin " password = " password " authorities = " ROLE_ADMIN " />
</ user-service >
</ authentication-provider >
</ authentication-manager >
</ beans : beans >يتم تنفيذ اختبار التكامل باستخدام إطار سياق اختبار الربيع. يتم استخدام قاعدة بيانات في الذاكرة (HSQL).
يتم اختبار الطرف الثاني (اختبار القبول) باستخدام Cucumber-JVM. هذا متاح تحت وحدة الاختبار التوت الفرعي. القصد من ذلك هو توفير الأتمتة النهائية لتنتهي لتطبيق ويب المكدس الكامل. ربما ، يمكن أن يدمج السيلينيوم في المستقبل مما يسمح بأتمتة تطبيق الويب على متصفحات الويب. ولكن في الوقت الحالي ، تتم كتابة اختبارات الخيار في الكود الخلفي. تتم كتابة معايير القبول في ملفات .feature باستخدام لغة Gherkin. هذا المجال يحتاج إلى تحسين. لاحظ أن اختبار النهاية 2 لهذا المشروع لا يزال WIP.
أنا ([email protected])
[TBD]
| الواجهة الأمامية | النهاية الخلفية | قاعدة البيانات | الاختبار | آخر |
|---|---|---|---|---|
| HTML | جافا 8 | HSQL (hypersql) | جونيت | SLF4J - log4j |
| CSS | نور الربيع | MySQL | Assertj | مافن |
| JS | Spring Web MVC | mongodb | mockito | هر |
| bootstrap | بيانات الربيع JPA | خيار JVM | Sonarqube | |
| JSP | أمن الربيع | سياق اختبار الربيع | لومبوك | |
| JSTL | JPA - السبات | |||
| DANDELION DATATABLES | JTA | |||
| التحقق من صحة الفول |