<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><div id="bloop_customfont" style="margin: 0px;"><br></div><div id="bloop_customfont" style="margin: 0px;">Szia Péter!</div><div id="bloop_customfont" style="margin: 0px;"><br></div><div id="bloop_customfont" style="margin: 0px;">Régen használtam már xml-es spring config-ot, de emlékeim szerint anno is meg kellett különböztetni a constructor alapú injektálást a property alapútól:</div><div id="bloop_customfont" style="margin: 0px;"><br></div><div id="bloop_customfont" style="margin: 0px;">&lt;bean id="foo" class="x.y.Foo"&gt;</div><div id="bloop_customfont" style="margin: 0px;">&nbsp; &lt;constructor-arg ref="bar"/&gt;</div><div id="bloop_customfont" style="margin: 0px;">&nbsp; &lt;constructor-arg ref="baz"/&gt;</div><div id="bloop_customfont" style="margin: 0px;">&lt;/bean&gt;</div><div id="bloop_customfont" style="margin: 0px;"><br></div><div id="bloop_customfont" style="margin: 0px;">vs.&nbsp;</div><div id="bloop_customfont" style="margin: 0px;"><br></div><div id="bloop_customfont" style="margin: 0px;">&lt;bean id="foo" class="x.y.Foo"&gt;</div><div id="bloop_customfont" style="margin: 0px;">&nbsp; &nbsp;&lt;property name=“bar” ref=“bar”/&gt;</div><div id="bloop_customfont" style="margin: 0px;">&nbsp; &nbsp;&lt;property name=“baz” ref=“baz”/&gt;</div><div id="bloop_customfont" style="margin: 0px;">&lt;/bean&gt;</div><div id="bloop_customfont" style="margin: 0px;"><br></div><div id="bloop_customfont" style="margin: 0px;"><br></div><div id="bloop_customfont" style="margin: 0px;">Én személy szerint nem látom, hogy ezzel probléma lenne, a konfigurációs részben függsz az osztály implementációs részleteitől amúgy is, valamint a java-s config esetében compile time hibát kapsz, ha az implementáció változik, tehát még csak veszélyeztetve sem vagy, hogy a változást nem reagálod le (ami amúgy baromi ritkán fog megesni).&nbsp;</div><div id="bloop_customfont" style="margin: 0px;"><br></div><div id="bloop_customfont" style="margin: 0px;">Más DI framework-ben (pl. Guice v. Dagger) a helyzet ugyanez.</div><div id="bloop_customfont" style="margin: 0px;"><br></div><div id="bloop_customfont" style="margin: 0px;">Üdv:</div><div id="bloop_customfont" style="margin: 0px;">Tamás</div></div> <br> <div id="bloop_sign_1478002429977592832" class="bloop_sign"><div style="font-family:helvetica,arial;font-size:13px"><br></div></div> <br><p class="airmail_on">On 1 November 2016 at 12:02:04, Peter Verhas (<a href="mailto:peter@verhas.com">peter@verhas.com</a>) wrote:</p> <blockquote type="cite" class="clean_bq"><span><div><div></div><div>



<title></title>


<div dir="ltr">Van egy interface
<div>
<pre style="font-family:menlo;font-size:9pt"><span style="color:rgb(0,0,128);font-weight:bold">public interface </span>ProductLookup {<br>    String getParam();<br><br>    ProductInformation byId(String id);<br><br>    List&lt;String&gt; byQuery(String query);<br>}
</pre>
<pre style="font-family:menlo;font-size:9pt">van több implementációja, az egyik
</pre>
<pre style="font-family:menlo;font-size:9pt"><br>
</pre>
<pre style="font-family:menlo;font-size:9pt"><span style="color:rgb(0,0,128);font-weight:bold">public class </span>ResourceBasedProductLookup <span style="color:rgb(0,0,128);font-weight:bold">implements </span>ProductLookup {<br>    <br>    <span style="color:rgb(0,0,128);font-weight:bold">private </span>String <span style="color:rgb(102,14,122);font-weight:bold">param</span>;<br><br>    <span style="color:rgb(0,0,128);font-weight:bold">public void </span>setParam(String param) {<br>        <span style="color:rgb(0,0,128);font-weight:bold">this</span>.<span style="color:rgb(102,14,122);font-weight:bold">param </span>= param;<br>    }<br><br>    <span style="color:rgb(0,0,128);font-weight:bold">public </span>String getParam() {<br><br>        <span style="color:rgb(0,0,128);font-weight:bold">return </span><span style="color:rgb(102,14,122);font-weight:bold">param</span>;<br>    }<br>
</pre>
<pre style="font-family:menlo;font-size:9pt">(folytatódik...)
</pre>
<pre style="font-family:menlo;font-size:9pt">A spring konfiguráció
</pre>
<pre style="font-family:menlo;font-size:9pt"><span style="color:rgb(128,128,0)">@Configuration</span><span style="color:rgb(128,128,0)"><br></span><span style="color:rgb(0,0,128);font-weight:bold">public class </span>SpringConfiguration {<br><br>    <span style="color:rgb(128,128,0)">@Bean @Primary<br></span><span style="color:rgb(128,128,0)">    </span><span style="color:rgb(0,0,128);font-weight:bold">public </span>ProductLookup productLookup(){<br><br>        ResourceBasedProductLookup pl =  <span style="color:rgb(0,0,128);font-weight:bold">new </span>ResourceBasedProductLookup();<br>        pl.setParam(<span style="color:rgb(0,128,0);font-weight:bold">"hukk"</span>);<br>        <span style="color:rgb(0,0,128);font-weight:bold">return </span>pl;<br>    }
</pre>
<pre style="font-family:menlo;font-size:9pt">tud róla, hogy ez egy setter injection. Miért? Ha átírom konstruktor injekcióra a konfigurációnak erről nem kellene tudnia. Nem az ő dolga.
</pre>
<pre style="font-family:menlo;font-size:9pt"><br>
</pre>
<pre style="font-family:menlo;font-size:9pt">Ezt nem értem.
</pre>
<pre style="font-family:menlo;font-size:9pt"><br>
</pre></div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr">On Mon, Oct 31, 2016 at 10:38 AM Zsombor
&lt;<a href="mailto:gzsombor@gmail.com">gzsombor@gmail.com</a>&gt;
wrote:<br></div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr" class="gmail_msg">
<div class="gmail_msg">Nem teljesen értem, de azt hiszem a válasz a
kérdésre igen. Az elég zavarossá tenné az inicializálást, ha
valamely mezők konstruktorban inicializálódnának, valamelyeket meg
utána a spring bele-mágiázná.<br class="gmail_msg"></div>
<div class="gmail_msg">Jobb, szerintem, teljesen a spring-re bízni
a bean létrehozást, és csak a legszükségesebbeket manuálisan életre
pofozgatni.<br class="gmail_msg">
<br class="gmail_msg"></div>
<div class="gmail_msg">Zs<br class="gmail_msg"></div>
<div class="gmail_msg"><br class="gmail_msg"></div>
<div class="gmail_msg"><br class="gmail_msg"></div>
</div>
<div class="gmail_extra gmail_msg"><br class="gmail_msg">
<div class="gmail_quote gmail_msg"></div>
</div>
<div class="gmail_extra gmail_msg">
<div class="gmail_quote gmail_msg">2016-10-31 9:47 GMT+01:00 Peter
Verhas <span dir="ltr" class="gmail_msg">&lt;<a href="mailto:peter@verhas.com" class="gmail_msg" target="_blank">peter@verhas.com</a>&gt;</span>:<br class="gmail_msg"></div>
</div>
<div class="gmail_extra gmail_msg">
<div class="gmail_quote gmail_msg">
<blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr" class="gmail_msg">Amikor egy Java nyelvű
konfigurációs osztállyal kofigurálom a Spring-et, akkor jól látom,
hogy a @Bean metódusok nincsenek szétválasztva az injektálás
implementációjától? Ha tehát egy mezőt eddig setter-rel injektáltam
és mostantól konstruktorban szeretném, akkor meg kell változtatnom
a @Bean metódust a konfigurációban?</div>
<br class="gmail_msg"></blockquote>
</div>
</div>
<div class="gmail_extra gmail_msg">
<div class="gmail_quote gmail_msg">
<blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
_______________________________________________<br class="gmail_msg">
Javalist mailing list<br class="gmail_msg">
<a href="mailto:Javalist@lists.javaforum.hu" class="gmail_msg" target="_blank">Javalist@lists.javaforum.hu</a><br class="gmail_msg">
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br class="gmail_msg">

<br class="gmail_msg"></blockquote>
</div>
<br class="gmail_msg"></div>
_______________________________________________<br class="gmail_msg">
Javalist mailing list<br class="gmail_msg">
<a href="mailto:Javalist@lists.javaforum.hu" class="gmail_msg" target="_blank">Javalist@lists.javaforum.hu</a><br class="gmail_msg">
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br class="gmail_msg">
</blockquote>
</div>


_______________________________________________
<br>Javalist mailing list
<br>Javalist@lists.javaforum.hu
<br>http://lists.javaforum.hu/mailman/listinfo/javalist
<br></div></div></span></blockquote></body></html>