ورود

View Full Version : سوال: مشکل با یک متد یک مثال در فریمورک spring



amirjun32
جمعه 01 بهمن 1395, 19:29 عصر
سلام.من یک مثال از spring رو توی اکلیپس پیاده کردم ولی به یک مشکل تفریبا عجیب برخوردم.ابتدا کدهاشو یک نگاه کنید.


کلاس Main


package ir.springmvc.lifecycle;

import org.springframework.context.support.ClassPathXmlAp plicationContext;

public class Main {
public Main(){
ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("MyConfig.xml");

MyBean bean=(MyBean)context.getBean("hassanBean");

System.out.println(bean.getMessage1());

context.close();
}
public static void main(String[] args) {
new Main();
}

}


کلاس MyBean


package ir.springmvc.lifecycle;





public class MyBean {
String message1;

public String getMessage1(){
return message1;
}



public void setmessage(String n){
message1=n;
}

}




و فایل MyConfig.xml



<?xml version="1.0" encoding="UTF-8"?>
<beans 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.xsd">

<!-- bean definitions here -->

<bean id="hassanBean" class="ir.springmvc.lifecycle.MyBean">
<property name="Message" value="Bean Life Cycle" />
</bean>


</beans>


حالا چیزی که ظاهرا یک مشکله با اینکه بنده باهاش مشکل دارم اینه که مگه توی کلاس MyBean متد setmessage اسمش اختیاری نیست؟منظورم اینه که درسته این متد قراره یک پیغام ست کنه،ولی اسمش که نباید اهمیتی داشته باشه که چی هست.شاید بنده بخام اسم متدمو بزارم showmessage یا MySetMessage ولی کارش که فرقی نکرده.ولی متاسفانه توی این مثال باید حتما اون کلمه set اولش باشه وگرنه جواب نمیده. ظاهرا اون set جزنی از جاواست و ادامش هرکلمه ای که بنویسیم باید توی name="Message" فایل myconfig همون ادامه set رو بنویسیم.
امیدوارم منظورمو رسونده باشم.

vahid-p
شنبه 02 بهمن 1395, 17:05 عصر
من با این فریم ورک کار نکردم. اما چرا از Annotation استفاده نمیکنید؟

ضمنا بله ممکنه چنین تطابقی بین اسم متد و اسمی که در فیلد name وارد میکنید باشه. چون از شما نمیخواد علاوه بر فیلد name از فیلد دیگه ای برای مشخص کردن method استفاده کنید و در نتیجه خودش پیشفرض این کار رو انجام میده. کلا در جاوا رسم بر اینه که فیلد با حرف کوچک شروع بشه (مثلا fieldName) و getter و setter هاش به صورت getFieldName و setّFieldName باشه. خب اگر بر این اساس بنویسید و این فریم ورک هم این استاندارد رو در نظر گرفته و برای راحتی کار ممکنه این رو انجام داده باشه. حتی در Hibernate فکر کنم شما کافیه اسامی رو بنویسید و خودش اتوماتیک پیدا میکنه کدوم برای کدوم هست.

بله میتونن (شاید هم چنین آپشنی باشه) که اسم رو از نام تابع جدا کنید.
بخش 2.5.2 این داکیومنت رو بخونید: http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/new-in-3.html