En Grails tenemos clases de servicio que contienen lógica de negocios que se llama desde los controladores. ¿Dónde pongo las clases de servicio en el proyecto Play Framework? Y si defino métodos en el controlador que no son acciones de solicitud sino métodos de utilidad como int findMax (int a, int b) en el controlador, ¿es posible definirlo dentro del controlador y cómo declaro tales métodos?¿Dónde poner clases de servicio en Play Framework?
Respuesta
La lógica de negocios en general debería implementarse como métodos en las clases de modelo, sea estáticamente o no, según el contexto.
Si bien no existen reglas al respecto, los métodos de utilidad deben ir en su propia clase de utilidad en un paquete, o pueden ser parte de las clases de modelo según el contexto.
Como ejemplo, un método de utilidad simple que compara dos primitivos, como su clase findMax(int, int)
, es mejor en una clase de utilidad, aunque un método como findOldest(Person, Person)
es más adecuado para ser un método estático en la clase de modelo de persona .
No hay reglas para esto. Yo personalmente pondría los métodos de utilidad en clases de utilidad. Las clases de utilidad y las clases de servicio deben seguir las reglas de paquete normales, es decir, com.stackoverflow.services.statistic.UsageCalculator
.
puede crear un paquete en la carpeta de aplicaciones y escribir su propia clase de servicio o clase lógica. Luego puede usar esta clase y su método en el controlador de aplicaciones.
Hacer paquete en la carpeta de aplicaciones: por ej. play.service.chiken y hacer nueva clase en este paquete
{
package play.service.chiken;
import java.util.ArrayList;
import java.util.List;
import models.QuotesModel;
public class Utility {
public List<QuotesModel> getListOfQuotes(int itemCount)
{
ArrayList<QuotesModel> list=new ArrayList<QuotesModel>(10);
for(int x=0;x<itemCount;x++)
{
QuotesModel quotesModel=new QuotesModel();
quotesModel.authorName="";
quotesModel.category="";
quotesModel.bookmark="Y";
quotesModel.id=x+"";
quotesModel.content="Quotes n umber ,njdsfkhwjd jr x=" +x;
list.add(quotesModel);
}
return list;
}
}
}
a continuación, utilizar esta clase en Controlador de aplicación:
public static Result entryInDB() {
Utility util=new Utility();
List<QuotesModel> list=util.getListOfQuotes(50);
list.get(2).save();
List<QuotesModel> secondlist=QuotesModel.find.all();
return ok(index.render("Size Of List "+secondlist.toString()));
}
Cambio en el router y application.conf archivo:
# Ebean configuration
# ~~~~~
# You can declare as many Ebean servers as you want.
# By convention, the default server is named `default`
#
ebean.default="models.*"
Enrutador:
# Home page
GET / controllers.Application.index()
GET /addbar controllers.Application.addBar()
GET /entryindb controllers.Application.entryInDB()
- 1. ¿Dónde poner clases internas?
- 2. DTO en Play Framework
- 3. CakePHP - dónde poner la lógica del servicio
- 4. Play Framework 2.0 - ¿Dónde está jsAction?
- 5. Play Framework for Scala - Servicio web RESTful
- 6. excluyendo las clases de carga en caliente en Play Framework
- 7. ¿Dónde pongo el código de inicio en Play Framework?
- 8. ¿Dónde está el método isAjax() en Play Framework 2.0?
- 9. dónde poner la lógica de validar? En servicio o repositorio?
- 10. ¿Dónde está el repositorio maven del framework play?
- 11. Entity Framework - diseño en capas - ¿Dónde poner connectionstring?
- 12. dónde poner las clases definidas por el usuario en Rails
- 13. Play Framework 2.0: Formateadores personalizados
- 14. Dónde poner struts.xml
- 15. Populate Inputs en Play Framework
- 16. play-framework [2.0] HTTPS
- 17. UUID con Play Framework
- 18. ¿Cómo funciona Play Framework?
- 19. play framework installation
- 20. Play Framework y DB2
- 21. Play Framework GUID
- 22. RESTful on Play! framework
- 23. JHAML y play framework?
- 24. ¿Dónde entró el servicio web ASP.NET en .Net Framework 4.0?
- 25. ¿Dónde puedo encontrar el diagrama de clases de .NET Framework?
- 26. Play framework en Mac, problema de rendimiento
- 27. ¿Dónde poner fragmentos de código en Rails?
- 28. ¿Admite Play Framework los "fragmentos"?
- 29. Implementando una Play! Aplicación Framework
- 30. Arquitectura Java EE con Play Framework
Supongamos que creo una carpeta de utilidades en raíz_proyecto/app, ¿jugaría framework a recoger automáticamente las clases definidas allí o tendré que poner algo en la configuración? ¿Qué sucede si creo una carpeta de utilidades en raíz_proyecto y no debajo de la aplicación? – ace
La carpeta de la aplicación es donde va todo el código fuente de Java, por lo que su carpeta de utilidades debe colocarse allí. No necesita cambiar la configuración, Play la recogerá automáticamente. Cualquier código aquí estará en el paquete util. – Rich
Me interesaría saber por qué esta respuesta ha tenido un voto negativo. – Rich