2010-07-04 5 views
0

Est-il interdit ou pas une bonne pratique de créer des objets en utilisant new. Créer des objets signifie comme des objets Helper pour certaines tâches qui ne sont pas liées à la requête, mais qui sont simplement utilisées pour effectuer des tâches d'arrière-plan telles que lire un fichier local, une base de données, etcUtilisation de nouvelles dans les applications de cadre Spring?

+0

pourquoi penseriez-vous que c'est interdit? –

+0

Par "interdit", je voulais dire que l'utilisation de ce qui pourrait être dangereux ou trompeur, quelque chose comme l'utilisation de goto. Il est parfaitement valide, mais son utilisation pourrait conduire à des résultats indésirables – Ram

Répondre

2
  1. Il est pas interdit
  2. Ce n'est pas une bonne pratique pour instancier les composants sans état (comme aides), parce que vous créez des instances inutiles
  3. Tous les grains de printemps « live » dans le contexte de l'application, et il est le celui qui les instancie, pas vous. Donc, si vous voulez pouvoir injecter dépendances dans vos objets, laissez-les être gérés par un ressort, c'est-à-dire ne pas instancier avec new.
  4. En règle générale, seuls les objets de valeur (User, Address, AccountInfo, etc.) sont instanciés par vous (en utilisant new)
  5. Il y a une « magie » qui vous permet d'avoir à la fois l'injection de dépendance et instanciation à l'aide new. C'est l'annotation @Configurable. Il utilise des tisseurs AspectJ qui se branchent sur la VM. Mais ce n'est pas quelque chose à considérer jusqu'à ce qu'il n'y ait pas d'alternatives. (la dernière phrase est mon opinion)
0

manière orientée objet (en minimisant l'impact de l'utilisation d'interfaces ou en ayant le moins de dépendances possible entre les classes). Dans le contexte de l'application, vous créez un environnement statique, ce qui signifie que vous instanciez la structure de l'objet de la façon dont vous en avez besoin dans votre application.

Exemples pour des objets qui sont généralement instanciées dans le contexte du printemps:

  • connexions de base de données
  • classes de service
  • page contrôleurs etc.

Ce sont toutes les ressources statiques qui n » t directement changer pendant le cycle de vie de vos applications (c'est pourquoi vous pouvez les instancier dans un contexte statique).

Si vous n'avez qu'un objet qui obtient toutes ses informations de manière dynamique pendant l'exécution (par exemple, à partir d'une requête Web ou d'un autre fichier), vous ne pouvez pas les instancier dans un contexte Spring. Ne pas oublier que le printemps veut et devrait être aussi discret que possible, alors pourquoi devrait-il être interdit d'utiliser tout ce que vous avez utilisé auparavant?

Questions connexes