شروع آشنایی با Spring

راه اندازی محیط Spring

قبلاً کمی با Spring ، بخش ها و مفاهیم به کار رفته در آن آشنا شدیم ، در این آموزش کوتاه یاد می گیریم که چگونه از این framework در برنامه های خودمان استفاده کنیم.

در این آموزش از Apache Commons Logging 1.2 و Spring Framework 4.1.5 استفاده می کنیم.

اگر به آدرس http://projects.spring.io/spring-framework مراجعه کنید متوجه می شوید که استفاده از ابزار های dependency management system را توصیه کرده اند و راه حل های مبتنی بر MAVEN و GRADLE را ارائه داده اند ولی ما در این آموزش به شیوه دیگری عمل می کنیم.

دانلود Apache Commons Logging :

ابتدا به آدرس http://commons.apache.org/proper/commons-logging/download_logging.cgi می رویم و از قسمت Binaries فایل فشرده مربوط به Commons Logging را دانلود می کنیم و سپس فایل فشرده را در جایی از  کامپیوتر خودمان از حالت فشرده خارج می کنیم

 

دانلود Spring Framework

در این آموزش ما از maven یا gradle استفاده نمی کنیم بلکه خودمان فایل فشرده Spring framework را دانلود می کنیم. برای اینکار می توانیم به یکی از دو آدرس زیر مراجعه کنیم :

http://maven.springframework.org/release/org/springframework/spring/4.1....

http://repo.spring.io/release/org/springframework/spring/4.1.5.RELEASE

سپس فایل spring-framework-4.1.5.RELEASE-dist.zip را دانلود می کنیم و آن را در جایی از کامپیوتر خودمان از حالت فشرده خارج می کنیم.

 

ساخت اولین پروژه :

یک پروژه جاوایی معمولی ایجاد می کنیم سپس فایل های jar موجود در پوشه commons-logging-1.2 را به کتابخانه های برنامه اضافه می کنیم.

فایل های jar موجود در spring-framework-4.1.5.RELEASE\libs را نیز به کتابخانه های برنامه اضافه می کنیم ، البته در داخل این پوشه فایل های jar بسیاری وجود دارند که به همه آن ها نیاز ندارید ولی در این آموزش همه آن ها را برای راحتی کار به برنامه اضافه می کنیم در ادامه در طی اجرای پروژه های بزرگتر خودتان یاد می گیرید که تنها از jar های مورد نیاز استفاده کنید.

 

نوشتن کد های اولین پروژه :

برای نوشتن اولین پروژه مبتنی بر Spring framework از کد های نمونه http://projects.spring.io/spring-framework استفاده می کنیم. برای اینکار به صورت زیر عمل می کنیم:

یک package دلخواه در داخل پروژه ایجاد می کنیم.

یک interface به نام MessageService به صورت زیر ایجاد می کنیم :


package safecomp.spring;

public interface MessageService {
	String getMessage();
}

این اینترفیس تنها یک متد به نام getMessage را تعریف می کند.

کلاس MessagePrinter  را به صورت زیر تعریف می کنیم :


package safecomp.spring;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;


@Component
public class MessagePrinter {
	final private MessageService service;
	
	@Autowired
	public MessagePrinter(MessageService service){
		this.service=service;
	}
	
	public void printMessage(){
		System.out.println(service.getMessage());
	}
}

متد printMessage نتیجه فراخوانی متد getMessage بر روی نمونه service را چاپ می کند. در این کلاس از دو Annotation استفاده شده است.

Component@ مشخص می کند که کلاس MessagePrinter یک کامپوننت است ، این Annotation از Spring 2.5 به بعد تعریف و اضافه شده است.

کلاس هایی که با این Annotation تعریف شوند به صورت خودکار به عنوان کامپوننت شناسایی می شوند. (اگر درکی از کاربرد این مفاهیم ندارید نگران نباشید در آینده این مفاهیم را بهتر درک خواهید کرد).

 

Autowired@

این Annotation باعث خودکار سازی ایجاد dependecy می شود و ما را از نوشتن تنظیمات XML عجیب و غریب بی نیاز می سازد ، در این مثال این Annotation به ما می فهماند که پارامتر service برای سازنده کلاس MessagePrinter به صورت خودکار توسط Spring Framework از داخل Context استنتاج می شود ، در ادامه  متوجه خواهید شد که چگونه استفاده از Auto Wiring باعث ایجاد Dependecy Injection می شوند

کلاس Application را به صورت زیر تعریف می کنیم :


package safecomp.spring;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;


@Configuration
@ComponentScan
public class Application {
	
	@Bean
    MessageService mockMessageService() {
        return new MessageService() {
            public String getMessage() {
              return "Hello World!";
            }
        };
    }
	
	public static void main(String[] args) {
	      ApplicationContext context = 
	          new AnnotationConfigApplicationContext(Application.class);
	      MessagePrinter printer = context.getBean(MessagePrinter.class);
	      printer.printMessage();
	}
}

اگر قبلاً سابقه برنامه نویسی Java EE یا کار با EJB  و مفاهیم مشابه را داشته باشید درک کد بالا برایتان آسان خواهد شد ، در غیر این صورت کمی این کد عجیب و غریب خواهد بود.

تمام برنامه های Spring ای به مفهومی به نام Context نیاز دارند. در اینجا یک ApplicationContext به نام context  از روی کلاس Application ایجاد می کنیم متد mockMessageService به عنوان متدی که Bean بر می گرداند تعریف شده و در این context تعریف شده است چون عضوی از کلاس Application است.با استفاده از context.getBean می توانیم Bean های دلخواهی را از روی کلاس هایمان ایجاد کنیم در اینجا یک Bean به نام printer از نوع MessagePrinter تعریف می کنیم. متد mockMessageService نیز در context تعریف شده و یک MessageService بر می گرداند.در اینجا پای Auto Wiring به وسط کشیده می شود و پارامتر ورودی سازنده MessagePrinter را به درستی استنتاج می کند (از نتیجه فراخوانی متد mockMessageService به صورت خودکار و بدون دخالت ما استفاده می کند).

هنگامی که برنامه فوق را مانند هر برنامه معمولی جاوایی اجرا کنیم نتیجه زیر چاپ می شود


Hello World!

 

در این آموزش با نحوه راه اندازی محیط Spring Framework آشنا شدیم ، نگران مفاهیم جدید مطرح شده نباشید ، این موضوعات را در مثال های بیشتر بهتر درک خواهید کرد و موضوع مورد بحث این آموزش نبودند و در حال حاضر چندان روی درک آن ها تاکید نداریم ، آنچه در این آموزش می خواستیم به آن برسیم راه اندازی و استفاده از Spring Framework بود.

 

برچسب‌ها
  • بازدیدامروز 169
  • |
  • روزگذشته 138
  • |
  • هفته جاری 697
  • |
  • ماه جاری 1523
  • |
  • بازدید کل 328586