Ok scusami , ma allora non va bene fare l'autowired di un oggetto repository in
un service .
Il Venerdì 16 Febbraio 2018 16:08, "Andrea Ligios [email protected]
[it-torino-java-jug]" <[email protected]> ha scritto:
Ciao,
Stateless nel senso che essendo singleton non devono mantenere uno stato, non
devono avere variabili.
@Stateless è la notazione Java EE per definire un EJB stateless non-singleton,
non è quello che stai cercando.
2018-02-16 14:41 GMT+01:00 Danilo Boi [email protected]
[it-torino-java-jug] <[email protected]>:
Ciao Massimo .Grazie della risposta .Mi preocupa perchè mi domando :
Quando ho piu chiamate in contemporanea essendo oggetti Singhelton non rischio
di restituire o eseguire operazioni su db Sbagliate ? una sorta di
sovraposizione degli accessi a db.Per stateless intendi definire le mie cleassi
services con @Stateless o anche i repository?Grazie mille ciao.
Il Venerdì 16 Febbraio 2018 13:27, "Massimo Ugues [email protected]
[it-torino-java-jug]" <it-torino-java-jug@ yahoogroups.com> ha scritto:
Ciao.Direi che l'approccio e' da manuale, in spring per default tutti i
bean hanno scopo singleton: la premessa importante da capire è che essendo
singleton devono essere stateless.Perchè hai dei dubbi sul Repository? Direi
che visto che possono essere visti come dei DAO anche loro dovrebbero essere
stateless.
Lo stereotipo @Repository mi pare che aggiunga degli aspetti per fare il
translate delle sottostanti sql exceptions e ti permetta di iniettare un
PersistenceContext o un EntityManager se dovessi averne bisogno (ripeto mi pare
e su questo sto andando a braccio).
Secondo me quindi tutto corretto ;)
P.S. I servizi Rest li stai annotando con @Controller? lo stereotipo dedicato è
@RestController.
2018-02-16 11:12 GMT+01:00 Danilo Boi [email protected]
[it-torino-java-jug] <it-torino-java-jug@ yahoogroups.com>:
Ciao A tutti .Grazie per aver accettato la richiesta.Mi sto occupando di
programmazionejava specificatamente , al momento , su Spring MVC.Sto
sviluppando dei servizi Rest.....In particolare la Parte ORMla sto gestendo con
spring-mybatis Lasciando fare a spring lafactory dei mapper Mentre per il
layer dicontrollo sto seguendo l’approccio di alcuni esempi che ho trovato in
rete e cioè Un oggetto controllerannotato con @Controller Vari oggetti di
servizio (Businesslogic) annotati come @Service Oggetti di manager deimapper
MyBatis annotati come @Repository All’interno di questooggetto eseguo del
@Controller eseguo @Autowired degli oggetti @ServiceNegli oggetti
@Serviceeseguo @Autowired degli oggetti @RepositoryChe a loro volta iniettano
imapper MyBatis. Il dubbio che mi attanagliada qualche giorno è che
SpringAll’avvio istanzia il @Controllercon un riferimento a n @ServiceQuesti a
loro volta saranno“Singleton” che a loro volta iniettanoGli oggetti
@Repositoryche a loro volta iniettano i mapper MyBatis. Da quello che ho capito
mitrovo in una situazione in cui tutti gli oggetti sono “Singleton” e questo
puòandarmi bene per il @controller e forse anche per il @Service ma
miintimorisce per il layer @Repository. Ho sbagliato l’approccio ? Scusate e
grazie .Ciao.
--
Massimo Ugues
#yiv3209390488 #yiv3209390488 -- #yiv3209390488ygrp-mkp {border:1px solid
#d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv3209390488
#yiv3209390488ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv3209390488
#yiv3209390488ygrp-mkp #yiv3209390488hd
{color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px
0;}#yiv3209390488 #yiv3209390488ygrp-mkp #yiv3209390488ads
{margin-bottom:10px;}#yiv3209390488 #yiv3209390488ygrp-mkp .yiv3209390488ad
{padding:0 0;}#yiv3209390488 #yiv3209390488ygrp-mkp .yiv3209390488ad p
{margin:0;}#yiv3209390488 #yiv3209390488ygrp-mkp .yiv3209390488ad a
{color:#0000ff;text-decoration:none;}#yiv3209390488 #yiv3209390488ygrp-sponsor
#yiv3209390488ygrp-lc {font-family:Arial;}#yiv3209390488
#yiv3209390488ygrp-sponsor #yiv3209390488ygrp-lc #yiv3209390488hd {margin:10px
0px;font-weight:700;font-size:78%;line-height:122%;}#yiv3209390488
#yiv3209390488ygrp-sponsor #yiv3209390488ygrp-lc .yiv3209390488ad
{margin-bottom:10px;padding:0 0;}#yiv3209390488 #yiv3209390488actions
{font-family:Verdana;font-size:11px;padding:10px 0;}#yiv3209390488
#yiv3209390488activity
{background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv3209390488
#yiv3209390488activity span {font-weight:700;}#yiv3209390488
#yiv3209390488activity span:first-child
{text-transform:uppercase;}#yiv3209390488 #yiv3209390488activity span a
{color:#5085b6;text-decoration:none;}#yiv3209390488 #yiv3209390488activity span
span {color:#ff7900;}#yiv3209390488 #yiv3209390488activity span
.yiv3209390488underline {text-decoration:underline;}#yiv3209390488
.yiv3209390488attach
{clear:both;display:table;font-family:Arial;font-size:12px;padding:10px
0;width:400px;}#yiv3209390488 .yiv3209390488attach div a
{text-decoration:none;}#yiv3209390488 .yiv3209390488attach img
{border:none;padding-right:5px;}#yiv3209390488 .yiv3209390488attach label
{display:block;margin-bottom:5px;}#yiv3209390488 .yiv3209390488attach label a
{text-decoration:none;}#yiv3209390488 blockquote {margin:0 0 0
4px;}#yiv3209390488 .yiv3209390488bold
{font-family:Arial;font-size:13px;font-weight:700;}#yiv3209390488
.yiv3209390488bold a {text-decoration:none;}#yiv3209390488 dd.yiv3209390488last
p a {font-family:Verdana;font-weight:700;}#yiv3209390488 dd.yiv3209390488last p
span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv3209390488
dd.yiv3209390488last p span.yiv3209390488yshortcuts
{margin-right:0;}#yiv3209390488 div.yiv3209390488attach-table div div a
{text-decoration:none;}#yiv3209390488 div.yiv3209390488attach-table
{width:400px;}#yiv3209390488 div.yiv3209390488file-title a, #yiv3209390488
div.yiv3209390488file-title a:active, #yiv3209390488
div.yiv3209390488file-title a:hover, #yiv3209390488 div.yiv3209390488file-title
a:visited {text-decoration:none;}#yiv3209390488 div.yiv3209390488photo-title a,
#yiv3209390488 div.yiv3209390488photo-title a:active, #yiv3209390488
div.yiv3209390488photo-title a:hover, #yiv3209390488
div.yiv3209390488photo-title a:visited {text-decoration:none;}#yiv3209390488
div#yiv3209390488ygrp-mlmsg #yiv3209390488ygrp-msg p a
span.yiv3209390488yshortcuts
{font-family:Verdana;font-size:10px;font-weight:normal;}#yiv3209390488
.yiv3209390488green {color:#628c2a;}#yiv3209390488 .yiv3209390488MsoNormal
{margin:0 0 0 0;}#yiv3209390488 o {font-size:0;}#yiv3209390488
#yiv3209390488photos div {float:left;width:72px;}#yiv3209390488
#yiv3209390488photos div div {border:1px solid
#666666;min-height:62px;overflow:hidden;width:62px;}#yiv3209390488
#yiv3209390488photos div label
{color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv3209390488
#yiv3209390488reco-category {font-size:77%;}#yiv3209390488
#yiv3209390488reco-desc {font-size:77%;}#yiv3209390488 .yiv3209390488replbq
{margin:4px;}#yiv3209390488 #yiv3209390488ygrp-actbar div a:first-child
{margin-right:2px;padding-right:5px;}#yiv3209390488 #yiv3209390488ygrp-mlmsg
{font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv3209390488
#yiv3209390488ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv3209390488
#yiv3209390488ygrp-mlmsg select, #yiv3209390488 input, #yiv3209390488 textarea
{font:99% Arial, Helvetica, clean, sans-serif;}#yiv3209390488
#yiv3209390488ygrp-mlmsg pre, #yiv3209390488 code {font:115%
monospace;}#yiv3209390488 #yiv3209390488ygrp-mlmsg *
{line-height:1.22em;}#yiv3209390488 #yiv3209390488ygrp-mlmsg #yiv3209390488logo
{padding-bottom:10px;}#yiv3209390488 #yiv3209390488ygrp-msg p a
{font-family:Verdana;}#yiv3209390488 #yiv3209390488ygrp-msg
p#yiv3209390488attach-count span {color:#1E66AE;font-weight:700;}#yiv3209390488
#yiv3209390488ygrp-reco #yiv3209390488reco-head
{color:#ff7900;font-weight:700;}#yiv3209390488 #yiv3209390488ygrp-reco
{margin-bottom:20px;padding:0px;}#yiv3209390488 #yiv3209390488ygrp-sponsor
#yiv3209390488ov li a {font-size:130%;text-decoration:none;}#yiv3209390488
#yiv3209390488ygrp-sponsor #yiv3209390488ov li
{font-size:77%;list-style-type:square;padding:6px 0;}#yiv3209390488
#yiv3209390488ygrp-sponsor #yiv3209390488ov ul {margin:0;padding:0 0 0
8px;}#yiv3209390488 #yiv3209390488ygrp-text
{font-family:Georgia;}#yiv3209390488 #yiv3209390488ygrp-text p {margin:0 0 1em
0;}#yiv3209390488 #yiv3209390488ygrp-text tt {font-size:120%;}#yiv3209390488
#yiv3209390488ygrp-vital ul li:last-child {border-right:none
!important;}#yiv3209390488