จะกำหนดชื่อของบริการใน grails ได้อย่างไร?

ใน grails เมื่อคุณสร้างบริการ จะมีชื่อของคลาส ดังนั้นหากฉันสร้าง CategoryService ในคอนโทรลเลอร์ ฉันจะเพิ่ม 'def categoryService' ในคอนโทรลเลอร์

แต่จะกำหนดชื่อที่แตกต่างของคลาสได้อย่างไร ตัวอย่าง: 'mycategorySvc'?

ขอบคุณ


person Jonathan Lebrun    schedule 02.04.2011    source แหล่งที่มา


คำตอบ (2)


คุณจะต้องต่อสายด้วยตัวเองในไฟล์ spring/resources.groovy ที่กล่าวว่าฉันไม่แนะนำให้ทำสิ่งนี้ด้วยเหตุผลสองสามประการ

  1. การย่อคำว่า Service ให้เป็น Svc จะไม่ทำให้คุณได้รับอะไรเลย
  2. นักพัฒนา grails คนอื่นๆ ที่ดูโค้ดของคุณใน 6 เดือนจะพูดว่า "WTF?"

ฉันต้องการฟังข้อโต้แย้งสำหรับ MyCategorySvc ผ่าน MyCategoryService

และ BTW บิตแรกไม่สำคัญ (MyCatagory) ไม่จำเป็นต้องตรงกับโดเมน สิ่งเดียวที่จำเป็นสำหรับการฉีดอัตโนมัติคือคำว่าบริการในตอนท้าย คุณสามารถสร้างบริการที่เรียกว่า JooHooBooDooService และโยนมันลงใน CategoryController ได้เลย

person Gregg    schedule 02.04.2011
comment
ใช่แล้ว แต่เป็นเพราะว่ามีข้อบกพร่องใน Grails กับบริการบางอย่าง ฉันได้รับข้อผิดพลาด mypackage.MyCategoryService ไม่สามารถส่งด้วย mypackage.MyCategoryService - person Jonathan Lebrun; 07.04.2011
comment
Grails เวอร์ชันใดและคุณสามารถอธิบายจุดบกพร่องได้มากขึ้นหรือไม่ - person Gregg; 07.04.2011
comment
jira.grails.org/browse/GRAILS-7302 ฉันมีข้อความเดียวกันและฉัน ใช้รหัสกับ @Transactional ขอบคุณสำหรับความช่วยเหลือของคุณ - person Jonathan Lebrun; 12.04.2011

ฉันเดาว่าคุณกำลังเผชิญกับปัญหาการคัดเลือกนักแสดงอื่น ๆ แต่เพียงเพื่อตอบคำถาม วิธีการทำเช่นนี้คือการกำหนด bean ของเราใน resources.groovy

สมมติว่าฉันมี QuestionAnswerService แทนที่จะเป็น questionAnswerService ชื่อที่ฉันต้องการ qns ดังนั้นฉันจะกำหนด qns bean ใน resources.groovy

 beans = {
    qns(QuestionAnswerService){ 
    }
 }

และเพียงฉีดบริการของฉันด้วยชื่อนี้ในคอนโทรลเลอร์และบริการใด ๆ เช่น

def qns

เพียงเท่านี้ ฉันมี qns ชื่อ QuestionAnswerService bean ที่ฉีดเข้าไปแล้ว

หวังว่ามันจะช่วยได้ ขอบคุณ

person Anshul    schedule 29.10.2015