[Javalist] Spring Java Configuration

Tamás Fitos tamas.fitos at gmail.com
2016. Nov. 1., K, 13:24:29 CET


Szia Péter!

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:

<bean id="foo" class="x.y.Foo">
  <constructor-arg ref="bar"/>
  <constructor-arg ref="baz"/>
</bean>

vs. 

<bean id="foo" class="x.y.Foo">
   <property name=“bar” ref=“bar”/>
   <property name=“baz” ref=“baz”/>
</bean>


É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). 

Más DI framework-ben (pl. Guice v. Dagger) a helyzet ugyanez.

Üdv:
Tamás



On 1 November 2016 at 12:02:04, Peter Verhas (peter at verhas.com) wrote:

Van egy interface
public interface ProductLookup {
    String getParam();

    ProductInformation byId(String id);

    List<String> byQuery(String query);
}
van több implementációja, az egyik


public class ResourceBasedProductLookup implements ProductLookup {
     
    private String param;

    public void setParam(String param) {
        this.param = param;
    }

    public String getParam() {

        return param;
    }

(folytatódik...)
A spring konfiguráció
@Configuration
public class SpringConfiguration {

    @Bean @Primary
    public ProductLookup productLookup(){

        ResourceBasedProductLookup pl =  new ResourceBasedProductLookup();
        pl.setParam("hukk");
        return pl;
    }
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.


Ezt nem értem.



On Mon, Oct 31, 2016 at 10:38 AM Zsombor <gzsombor at gmail.com> wrote:
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á.
Jobb, szerintem, teljesen a spring-re bízni a bean létrehozást, és csak a legszükségesebbeket manuálisan életre pofozgatni.

Zs



2016-10-31 9:47 GMT+01:00 Peter Verhas <peter at verhas.com>:
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?

_______________________________________________
Javalist mailing list
Javalist at lists.javaforum.hu
http://lists.javaforum.hu/mailman/listinfo/javalist


_______________________________________________
Javalist mailing list
Javalist at lists.javaforum.hu
http://lists.javaforum.hu/mailman/listinfo/javalist
_______________________________________________  
Javalist mailing list  
Javalist at lists.javaforum.hu  
http://lists.javaforum.hu/mailman/listinfo/javalist  
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20161101/392195b8/attachment.html>


További információk a(z) Javalist levelezőlistáról