2016-02-18 11 views
22

क्या कोटलिन में निम्नलिखित कुछ करना संभव है?स्प्रिंग एनोटेशन का उपयोग कैसे करें @ kutlin में @Autowired?

@Autowired 
internal var mongoTemplate: MongoTemplate 

@Autowired 
internal var solrClient: SolrClient 
+1

आप की कोशिश की? और थोड़ा और रचनात्मक होने के लिए .. एक संपूर्ण [वसंत बूट टेम्पलेट] है (https://kotlinlang.org/docs/tutorials/spring-boot-restful.html), जवाब निश्चित रूप से "हां" है। – mabi

+0

@mabi ट्यूटोरियल लिंक के लिए धन्यवाद :) – eendroroy

उत्तर

53

यकीन है कि यह संभव है के लिए, आप कुछ ही विकल्प हैं, मैं एनोटेट निर्माता सुझाव है, लेकिन lateinit यह भी काम करता है, और कुछ मामलों में हो सकता है उपयोगी:

Lateinit:

@Component 
class YourBean { 

    @Autowired 
    lateinit var mongoTemplate: MongoTemplate 

    @Autowired 
    lateinit var solrClient: SolrClient 
} 

कंस्ट्रक्टर: स्प्रिंग 4.3 के साथ

@Component 
class YourBean @Autowired constructor(
    private val mongoTemplate: MongoTemplate, 
    private val solrClient: SolrClient 
) { 
    // code 
} 

कंस्ट्रक्टर:

@Component 
class YourBean(
    private val mongoTemplate: MongoTemplate, 
    private val solrClient: SolrClient 
) { 
    // code 
} 

निर्माता संस्करण की जांच सब पर निर्भरता बीन निर्माण समय और सभी इंजेक्शन वाले फ़ील्ड - वैल, दूसरी ओर देर से इंजेक्शन वाले क्षेत्र हो सकते हैं केवल var, और थोड़ा रनटाइम पदचिह्न है। और रचनाकार के साथ कक्षा का परीक्षण करने के लिए, आपको प्रतिबिंब की आवश्यकता नहीं है।

लिंक:

  1. Documentation on lateinit
  2. Documentation on constructors
  3. Developing Spring Boot applications with Kotlin
5

हां, जावा एनोटेशन को कोटलिन में ज्यादातर जावा में समर्थित हैं। एक पकड़ लिया प्राथमिक निर्माता पर भी टिप्पणियां स्पष्ट 'निर्माता' कीवर्ड की आवश्यकता है:

से https://kotlinlang.org/docs/reference/annotations.html

आप एक वर्ग के प्राथमिक निर्माता टिप्पणी करने की जरूरत है, आप के लिए निर्माता कीवर्ड जोड़ने की जरूरत निर्माता घोषणा, और यह पहले एनोटेशन जोड़ने:

class Foo @Inject constructor(dependency: MyDependency) { 
    // ... 
} 
संबंधित मुद्दे