• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Spring - jak zrobić automatyczne wiązanie po konstruktorze adnotacjami?

0 głosów
1,315 wizyt
pytanie zadane 10 września 2015 w Java przez Kapitan Nowicjusz (210 p.)

Mam klasę User:

http://pastebin.com/cZM0U1jm

i do niej UserRepository:

http://pastebin.com/xh3HRB7R

całość zbiera w kupę Main:

      ApplicationContext context = 
             new ClassPathXmlApplicationContext("Beans.xml");
     
      UserRepository obj = (UserRepository)context.getBean("repozytoriumUzytkownikow");
      obj.printUser1();
      obj.printUser2();

xml:

<bean id="user1"
		class="database.model.User">
		<constructor-arg value="100"/>
		<constructor-arg value="springa"/>
		<constructor-arg value="springa"/>
		<constructor-arg value="springa"/>
		<constructor-arg value="1"/>
	</bean>
	
	<bean id="user2"
		class="database.model.User">
		<constructor-arg value="101"/>
		<constructor-arg value="springu"/>
		<constructor-arg value="springu"/>
		<constructor-arg value="springu"/>
		<constructor-arg value="0"/>
	</bean>
	 
   <bean id="repozytoriumUzytkownikow" class="database.model.UserRepository">
		<property name="user1" ref="uzytkownik1"></property>
		<property name="user2" ref="uzytkownik2"></property>
   </bean>
	
	<bean id="repozytoriumUzytkownikow" class="database.model.UserRepository"
		autowire="byName">		
   </bean>

Moje pytanie brzmi- jak mam to przerobić żeby działało to na adnotacjach? Chcę zrobić automatyczne wiązanie po konstruktorze. Wstawiłem @Service przed nazwy klas, zmodyfikowałem xml-a, a nad konstuktor User wrzuciłem @Autowired. Nie działa i nie mam pojęcia jak to powinno być. Przepracowałem tutorial Artura Owczarka, ale o ile jeszcze o konfiguracji w xml-u cokolwiek się dowiedziałem, to na podstawie zrealizowanych w tutorialu przykładów jakoś kompletnie nie kumam @. Więc jeśli to by nie było problemem, proszę także o podanie sensownych tutoriali ze Springa, które Wam pomogły. 

1 odpowiedź

0 głosów
odpowiedź 10 września 2015 przez event15 Szeryf (93,790 p.)
ApplicationContext context = 
       new ClassPathXmlApplicationContext("Beans.xml");

Na coś takiego:
 

ApplicationContext ctx = 
   new AnnotationConfigApplicationContext(HelloWorldConfig.class);


Dokładniejsze info:
http://www.tutorialspoint.com/spring/spring_java_based_configuration.htm

komentarz 11 września 2015 przez Kapitan Nowicjusz (210 p.)

Cześć, jeśli dobrze Cię zrozumiałem, mówisz żeby w ogóle zrezygnować z pliku .xml na rzecz konfiguracji javowej. Wg tutorialu Artura O. można zostawić plik xml z taką zawartością:

 <!-- Springu, bede uzywal annotacji! -->
   <context:annotation-config/>   
   <!-- Skanuj pakiet database.model -->
   <context:component-scan base-package="database.model.*"/>

i moim głównym celem nie była całkowita rezygnacja z XML-a, tylko załatwienie sprawy annotacjami.

Niemniej udało się zlikwidować error;). Zamiast niego w konsoli wyświetlają się nulle, więc jesteśmy ciut bliżej;)

User: 

http://pastebin.com/1aQ72qis

UserRepository: ( z odkomentowanymi częściami wynik jest ten sam sad)

http://pastebin.com/ZZ5rgktN

Main:

      ApplicationContext ctx = 
   		   new AnnotationConfigApplicationContext(UserRepository.class);
      
      UserRepository obj = (UserRepository)ctx.getBean("userRepository");  
      obj.printUser1();
      obj.printUser2();

Konsola:

user1 : null
user2 : null

 

 

komentarz 11 września 2015 przez event15 Szeryf (93,790 p.)
Artykuł wcześniejszy coś o tym wspomina:
http://www.tutorialspoint.com/spring/spring_annotation_based_configuration.htm

Mogę Ci jedynie cośp podlinkowywać, jestem PHPowcem, a z anotations mam do czynienia  jedynie w Doctrine itp.
komentarz 12 września 2015 przez Tomasz90 Nałogowiec (25,140 p.)
No wiesz jak usuniesz pozostałe rzeczy z xml-a i zostawisz tylko ten fragment to musisz gdzieś te beany zainicjalizować i robisz to w tej klasie z z adnotacja Configuration (tą którą podajesz w konstruktorze AnnotationConfigApplicationContext.

Podobne pytania

0 głosów
2 odpowiedzi 1,956 wizyt
pytanie zadane 30 listopada 2015 w Offtop przez Mikrokontroler xD Stary wyjadacz (13,500 p.)
0 głosów
0 odpowiedzi 239 wizyt
0 głosów
2 odpowiedzi 1,382 wizyt
pytanie zadane 16 czerwca 2019 w Java przez Eliro Stary wyjadacz (12,160 p.)

93,742 zapytań

142,678 odpowiedzi

323,297 komentarzy

63,326 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...