# Annotation Resource und Autowired



## Gast2 (9. Nov 2009)

Hallo zusammen,

1.Gibt es einen Unterschied zwischen den beiden Annotations?
2.Wie ist es besser die Annotations zu implementieren an der Membervariable? Oder mit einer setMethode?


----------



## maki (9. Nov 2009)

> Gibt es einen Unterschied zwischen den beiden Annotations?


Ja, der eine gehört zu einem offiziellen Java Standard (@Resource), der andere ist Springspezifisch (@Autowired).
Der eine funktioniert nach den Namen der Resourcen, der andere kümmert sich nur um das Interface/Klasse.
usw.



> 2.Wie ist es besser die Annotations zu implementieren an der Membervariable? Oder mit einer setMethode?


IMHO immer an der Membervariablen.


----------



## Noctarius (9. Nov 2009)

maki hat gesagt.:


> ...der andere kümmert sich nur um das Interface/Klasse...



Nope ich kann @Autowire auch dazu anhalten byName zu injecten. Autowire macht byType und dann byName oder eben byName wenn ich es explizit sage.


----------



## maki (9. Nov 2009)

Hast ja recht


----------



## Noctarius (9. Nov 2009)

Weiß ich doch 

Zitat: "Ich bin kein Klugscheisser, ich weiß es wirklich besser"


----------



## Gast2 (9. Nov 2009)

ok danke =)


----------



## Gast2 (11. Nov 2009)

Also über setter injection bekomm ich es hin , aber mit autowired ist meine sessionFactory immer null...

hab das hier in meiner xml
[XML]
<context:annotation-config/>

	<!-- Hibernate DAO -->
    <bean id="kundenDAO" class="dao.impl.HibernateKundenDAOImpl">
    </bean>
[/XML]


```
public class HibernateKundenDAOImpl implements KundenDAO{

	@Autowired
	private SessionFactory sessionFactory;
```

Java Blog: Annotationen in Spring 2.0/2.5 für Autowire und neue Beans | Javainsel-Blog

Muss ich noch was angeben?


----------



## Noctarius (11. Nov 2009)

Ja du musst ein Bean definieren, dass deine SessionFactory implementiert.


----------



## Gast2 (11. Nov 2009)

Noctarius hat gesagt.:


> Ja du musst ein Bean definieren, dass deine SessionFactory implementiert.



ja hab ich gemacht
[XML]
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" />
		<property name="configLocation" value="hibernate.cfg.xml" />
		<property name="dataSource" ref="dataSource" />
	</bean>
[/XML]


----------



## Noctarius (12. Nov 2009)

Hast du denn auch den Context auf Annotation-Driven gesetzt?


----------



## Gast2 (12. Nov 2009)

Noctarius hat gesagt.:


> Hast du denn auch den Context auf Annotation-Driven gesetzt?



ja denk schon, das mach ich doch mit der 1. zeile oder?



SirWayne hat gesagt.:


> Also über setter injection bekomm ich es hin , aber mit autowired ist meine sessionFactory immer null...
> 
> hab das hier in meiner xml
> [XML]
> ...


----------



## Noctarius (12. Nov 2009)

Theoretisch ja.

Benutzt du auch das richtige DAO? Also das, das durch Spring instanziert wurde?

Zeig mal ein wenig Code zum Zugriff auf das DAO.


----------



## Gast2 (12. Nov 2009)

Hab den Code grad nicht da, reich ich heut abend nach.
Aber ich benutz das richtige DAO, da es ja mit setter injection funktioniert.


----------



## Gast2 (12. Nov 2009)

```
public class HibernateKundenDAOImpl implements KundenDAO{
 
    @Autowired
    private SessionFactory sessionFactory;
 
    @Override
    public Kunde getKundeById(Long id) {
        return (Kunde) sessionFactory.getCurrentSession().load(Kunde.class, id);
    }
```

hier ist eigentlich der ganez zugriff

http://www.java-forum.org/application-tier/90335-transaktionen-spring.html
nur ánstatt setter injection mit annotationen


----------



## Noctarius (13. Nov 2009)

Ich denke trotzdem da stimmt etwas an deinem AppContext nicht.
Zeig mal das XML, den Bootstrapping Mechanismus (wenn standalone) oder das web.xml oder oder oder und wo du das Dao holst und benutzt.


----------



## Gast2 (13. Nov 2009)

Ich mach heut abend mal ein Unit Test und poste die app.xml...


----------



## Noctarius (13. Nov 2009)

Alles klar  Vielleicht löst das auch das Transaction-Problem


----------



## Gast2 (13. Nov 2009)

Noctarius hat gesagt.:


> Alles klar  Vielleicht löst das auch das Transaction-Problem



Hehe cool wär es


----------

