2012-09-30 5 views
6

मैं चाहते हैं अगर मैं इन कक्षाओं में सही ढंग से व्याख्या कर रहा हूँ पता करने के लिए, के बाद से मैं एनोटेशन के लिए नया हूँ:SpringMvc एनोटेशन

Country.java

@Component 
public class Country { 

private int countryId; 
private String countryName; 
private String countryCode; 

/** 
* No args constructor 
*/ 
public Country() { 
} 

/** 
* @param countryId 
* @param countryName 
* @param countryCode 
*/ 
public Country(int countryId, String countryName, String countryCode) { 
    this.countryId = countryId; 
    this.countryName = countryName; 
    this.countryCode = countryCode; 
} 
    //getters and setters 

} 

CountryDAO जावा

@Repository 
public interface CountryDAO { 

    public List<Country> getCountryList(); 

    public void saveCountry(Country country); 

    public void updateCountry(Country country); 
} 

JdbcCountryDAO.java

@Component 
public class JdbcCountryDAO extends JdbcDaoSupport implements CountryDAO{ 

    private final Logger logger = Logger.getLogger(getClass()); 

    @Autowired 
    public List<Country> getCountryList() { 
     int countryId = 6; 
     String countryCode = "AI"; 
     logger.debug("In getCountryList()"); 
     String sql = "SELECT * FROM TBLCOUNTRY WHERE countryId = ? AND countryCode = ?"; 
     logger.debug("Executing getCountryList String "+sql); 

     Object[] parameters = new Object[] {countryId, countryCode}; 

     logger.info(sql); 

     //List<Country> countryList = getJdbcTemplate().query(sql,new CountryMapper()); 
     List<Country> countryList = getJdbcTemplate().query(sql, parameters,new CountryMapper()); 
     return countryList; 
    } 

CountryManagerIFace.java

@Repository 
public interface CountryManagerIFace extends Serializable{ 

    public void saveCountry(Country country); 

    public List<Country> getCountries(); 
} 

CountryManager.java

@Component 
public class CountryManager implements CountryManagerIFace{ 

    @Autowired 
    private CountryDAO countryDao; 

    public void saveCountry(Country country) { 
     countryDao.saveCountry(country); 

    } 

    public List<Country> getCountries() { 
     return countryDao.getCountryList(); 
    } 


    public void setCountryDao(CountryDAO countryDao){ 

     this.countryDao = countryDao; 

    } 
} 
+0

ऑटोवायर गेटर निश्चित रूप से सही नहीं दिखता –

+1

देश को एक घटक या वीओ के रूप में घटक के रूप में एनोटेट नहीं किया जाना चाहिए। आप इसे एक साधारण unannotated बीन के रूप में छोड़ सकते हैं। –

+1

आपको कार्यान्वयन कक्षाओं की व्याख्या करनी चाहिए और आपको इंटरफेस के बारे में चिंता करने की ज़रूरत नहीं है। घटक से बचें जब तक कि कोई बेहतर, अधिक अर्थपूर्ण विकल्प न हो। एक नज़र में ऐसा लगता है जैसे CountryManager अधिक @Service की संभावना है। –

उत्तर

18

इस उत्तर एक सा बातें स्पष्ट करना चाहिए: What's the difference between @Component, @Repository & @Service annotations in Spring?

अन्य चीजें आपको पता होना चाहिए:

  • आपका संस्थाओं और इंटरफेस किसी भी टिप्पणी की जरूरत नहीं है। दरअसल, @ कॉम्पोनेंट और अन्य व्युत्पन्न एनोटेशन का मतलब यह है कि आप फ्लाई पर स्प्रिंग बीन घोषित कर रहे हैं। उदाहरण के लिए,

    @Component 
    public class MyComponent { ... } 
    

    डिफ़ॉल्ट रूप से वसंत के संदर्भ में "myComponent" नामक एक बीन जोड़ देगा। वसंत सेम डिफ़ॉल्ट रूप से सिंगलेट हैं, और असली तत्काल वस्तु का प्रतिनिधित्व करते हैं।
    तो स्प्रिंग बीन्स के रूप में संस्थाओं या इंटरफेस घोषित करने का कोई मतलब नहीं है।

  • प्रबंधक अर्थात् सेवाओं के समान ही हैं, इसलिए आपको उन्हें @ सेवा के साथ एनोटेट करना चाहिए।

यहां अपने कोड होना चाहिए:

// No annotation 
public class Country { 

और

// No annotation 
public interface CountryDAO { 

और

@Repository 
public class JdbcCountryDAO extends JdbcDaoSupport implements CountryDAO { 

और

// No annotation 
public interface CountryManagerIFace extends Serializable{ 

और

@Service 
public class CountryManager implements CountryManagerIFace{ 

    @Autowired 
    private CountryDAO countryDao; 

नोट: मैं शायद ही कभी, मेरे कोड में @Component का उपयोग @Controller (प्रस्तुति परत), @Service (सेवा परत) और @Repository (दाव परत) के रूप में अपने मुख्य वसंत सेम की जरूरत को कवर ।

+1

आपको बहुत धन्यवाद, यह अच्छी तरह से समझाया गया था – devdar