<p>A második megoldást fogom kipróbálni az elsőnek ebben a kontextusban nem lenne értelme, csak az interface kulcsszó miatt nem fogok szemetet gyártani. A cglib már nagyon rég benn van.</p>
<p>Garami Gábor<br>
<a href="mailto:gabor.garami@hron.me">gabor.garami@hron.me</a><br>
Skype: hron84<br>
Tel: +36 20 235 9621</p>
<p>Sent from my T-Mobile G2<br>
Ezt a levelet telefonról adták fel, ékezethibákat tartalmazhat.</p>
<div class="gmail_quote">2012.08.20. 12:00, &quot;Böszörményi Péter&quot; &lt;<a href="mailto:zmblevlist@gmail.com">zmblevlist@gmail.com</a>&gt; ezt írta:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Megneztem, a baj egyszeru. Spring alapbol jdk proxyt akar hasznalni, ahhoz, hogy a beanhoz tranzakcionalis viselkedest rendelejen. A jdk proxy viszont csak interfacekkel mukodik, a kod viszont konkret osztalyt var, ezen hasal ez az egesz. Megoldasok: az ArticleFactoryhoz keszites egy interfacet, vagy a tx:annotation-driven taget kiegeszited egy proxy-target-class=&quot;true&quot; attributummal, es berakod a cglibet fuggosegnek, ha meg nincs.<br>

<br>
On Sun, 19 Aug 2012 23:40:47 +0200, Gábor Garami &lt;<a href="mailto:gabor.garami@hron.me" target="_blank">gabor.garami@hron.me</a>&gt; wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Na, ilyet meg nem pipaltam. Elvben minden standard javas, sot,<br>
allitolag ajanlas az, ami nekem nem megy... meg ilyet...<br>
<br>
Szoval, adott ket rovid szosszenet:<br>
<br>
public interface IFacade&lt;T extends IEntity&gt; {<br>
<br>
    //@Transactional<br>
    public void create(T entity);<br>
<br>
    //@Transactional<br>
    public void update(T entity);<br>
<br>
    //@Transactional<br>
    public void remove(T entity);<br>
<br>
    public T find(Object id);<br>
<br>
    public List&lt;T&gt; findAll();<br>
<br>
    public List&lt;T&gt; findRange(int[] range);<br>
<br>
    public int count();<br>
}<br>
<br>
public abstract class AbstractFacade&lt;T extends IEntity&gt; implements IFacade&lt;T&gt; {<br>
<br>
    private Class&lt;T&gt; entityClass;<br>
<br>
    public AbstractFacade(Class&lt;T&gt; entityClass) {<br>
        this.entityClass = entityClass;<br>
    }<br>
<br>
    protected abstract EntityManager getEntityManager();<br>
<br>
    /**<br>
     * Stores new entity into the database<br>
     * @param entity the new entity. Should &lt;em&gt;not&lt;/em&gt; be persisted<br>
     */<br>
<br>
    @Transactional<br>
    @Override<br>
    public void create(T entity) {<br>
        if(!getEntityManager().<u></u>contains(entity)) {<br>
            getEntityManager().persist(<u></u>entity);<br>
            getEntityManager().flush();<br>
        }<br>
<br>
    }<br>
<br>
    /**<br>
     * Updates entity in the database<br>
     * @param entity the subject entity. Must &lt;em&gt;be&lt;/em&gt; persisted<br>
     */<br>
<br>
    @Override<br>
    @Transactional<br>
    public void update(T entity) {<br>
        getEntityManager().merge(<u></u>entity);<br>
        getEntityManager().flush();<br>
    }<br>
    /**<br>
     * Removes entity from the database<br>
     * @param entity the subject entity. Must &lt;em&gt;be&lt;/em&gt; persisted<br>
     */<br>
<br>
    @Override<br>
    @Transactional<br>
    public void remove(T entity) {<br>
        getEntityManager().remove(<u></u>getEntityManager().merge(<u></u>entity));<br>
        getEntityManager().flush();<br>
    }<br>
<br>
    // Es igy tovabb, az osszes metodushoz van megfelelo implementacio<br>
}<br>
<br>
A problema a kovetkezo. Ha az AbstractFacade fenti definiciojat hasznalom:<br>
<br>
Caused by:<br>
org.springframework.beans.<u></u>factory.BeanCreationException: Could not<br>
autowire field: private me.hron.springblog.dao.<u></u>ArticleFacade<br>
me.hron.springblog.controller.<u></u>ArticleContoroller.articleDao; nested<br>
exception is java.lang.<u></u>IllegalArgumentException: Can not set<br>
me.hron.springblog.dao.<u></u>ArticleFacade field<br>
me.hron.springblog.controller.<u></u>ArticleContoroller.articleDao to<br>
$Proxy27<br>
        at org.springframework.beans.<u></u>factory.annotation.<u></u>AutowiredAnnotationBeanPostPro<u></u>cessor$AutowiredFieldElement.<u></u>inject(<u></u>AutowiredAnnotationBeanPostPro<u></u>cessor.java:506)<br>
        at org.springframework.beans.<u></u>factory.annotation.<u></u>InjectionMetadata.inject(<u></u>InjectionMetadata.java:87)<br>
        at org.springframework.beans.<u></u>factory.annotation.<u></u>AutowiredAnnotationBeanPostPro<u></u>cessor.<u></u>postProcessPropertyValues(<u></u>AutowiredAnnotationBeanPostPro<u></u>cessor.java:284)<br>
        at org.springframework.beans.<u></u>factory.support.<u></u>AbstractAutowireCapableBeanFac<u></u>tory.populateBean(<u></u>AbstractAutowireCapableBeanFac<u></u>tory.java:1106)<br>
        at org.springframework.beans.<u></u>factory.support.<u></u>AbstractAutowireCapableBeanFac<u></u>tory.doCreateBean(<u></u>AbstractAutowireCapableBeanFac<u></u>tory.java:517)<br>
        at org.springframework.beans.<u></u>factory.support.<u></u>AbstractAutowireCapableBeanFac<u></u>tory.createBean(<u></u>AbstractAutowireCapableBeanFac<u></u>tory.java:456)<br>
        at org.springframework.beans.<u></u>factory.support.<u></u>AbstractBeanFactory$1.<u></u>getObject(AbstractBeanFactory.<u></u>java:294)<br>
        .... and so on...<br>
<br>
Ha viszont nem implementalom az IFacade interfeszt a fenti modon<br>
(vagyis kiesik az implements IFacade&lt;T&gt;) akkor gyonyoruen fut a progi.<br>
<br>
A tesztek mindket esetben lefutnak, tehat magad a kesz, implementalt<br>
dao objektumot nem befolyasolja az IFacade lete vagy nem lete, egyedul<br>
a kontrollerekbe torteno injekciozas, az, ami megdoglik ilyenkor.<br>
<br>
Nem tudom, hogy ez-e a baj, de olyan erzesem van, mintha az IFacade<br>
implementaciojanak tenye tul bonyolult lenne a kis egyszeru szoszke<br>
lelkenek, es nem tudna feloldani, hogy mi a pocsot akarok en ottan.<br>
Pedig hat azert ez annyira nem egy ertelmetlen dolog.<br>
<br>
Az app mukodik enelkul a szerkezet nelkul is, szoval en biztos nem<br>
fogok a konyhakes utan nyulkalni szivbokdoses celjaval, ha ez igy nem<br>
fog osszejonni, de furdalja a lelkemet, hogy ugyan mi kivetnivalot<br>
talal ebben? Esetleg en rontok el valamit, es - noch dazu - valami<br>
nonszensz dolgot eroltetek?<br>
<br>
<br>
Garami Gábor<br>
E-mail: <a href="mailto:gabor.garami@hron.me" target="_blank">gabor.garami@hron.me</a><br>
Tel: <a href="tel:%2B36%2020%20235%209621" value="+36202359621" target="_blank">+36 20 235 9621</a><br>
MSN: <a href="mailto:hrgy@vipmail.hu" target="_blank">hrgy@vipmail.hu</a><br>
Skype: hron84<br>
______________________________<u></u>_________________<br>
Javalist mailing list<br>
<a href="mailto:Javalist@lists.javaforum.hu" target="_blank">Javalist@lists.javaforum.hu</a><br>
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" target="_blank">http://lists.javaforum.hu/<u></u>mailman/listinfo/javalist</a><br>
</blockquote>
<br>
<br>
-- <br>
Üdvözlettel,<br>
Böszörményi Péter<br>
______________________________<u></u>_________________<br>
Javalist mailing list<br>
<a href="mailto:Javalist@lists.javaforum.hu" target="_blank">Javalist@lists.javaforum.hu</a><br>
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" target="_blank">http://lists.javaforum.hu/<u></u>mailman/listinfo/javalist</a><br>
</blockquote></div>