Spring Boot - @Autowired - problem z wstrzyknięciem

Spring Boot - @Autowired - problem z wstrzyknięciem
R1
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 7 lat
  • Postów:2
0

Klasa startowa:

Kopiuj
public static void main(String[] args) {
		SpringApplication.run(SpringtestApplication.class, args);

		@Autowired
		ClassA classA;

		@Autowired
		ClassB classB;

    	       classB.show();
}

Klasa A

Kopiuj
@Component
public class ClassA {

    public void show(){
        System.out.println("ClassA");
    }
}

Klasa B
@Component
public class ClassB {

public void show(){
    System.out.println("ClassB");
}

public ClassB(ClassA a){
    a.show();
}

}

Problem:
Error:(16, 17) java: annotation type not applicable to this kind of declaration

Co chce uzyskać: wg mnie powinien uzyskać w konsoli wynik:
ClassA
ClassB
ponieważ, pierw wstrzykujemy do konstruktora ClassB, gdzie jest uruchamiane a.show().

Pytania:

  1. czy mój to rozumowania jest ok ?
  2. gdzie leży problem i dlaczego ?
  3. czy kod z adnotacją @Autowired będzie działał dokładnie tak samo, jak:
Kopiuj
//		ClassA classA = new ClassA();
//		ClassB classB = new ClassB(classA);
//		classB.show();
edytowany 1x, ostatnio: remsey1
S9
  • Rejestracja:ponad 10 lat
  • Ostatnio:6 miesięcy
  • Lokalizacja:Warszawa
  • Postów:3573
1

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/annotation/Autowired.html
Hmm nigdzie nie widzę żeby @ Autowired miało target LOCAL_VARIABLE
Polecam najpierw
1)Nauczyć się Javy
2)Poczytac dokumentacje


"w haśle <młody dynamiczny zespół> nie chodzi o to ile masz lat tylko jak często zmienia się skład"
edytowany 1x, ostatnio: scibi92
Autowired
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 7 lat
  • Postów:3
5

Boy, wstrzykujesz do pól, a nie do zmiennnych w metodzie... Zawołaj mnie innym razem.

jarekczek
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Siemianowice Śląskie
  • Postów:500
0

Rozumiem, chciałeś uruchomić spring application najkrótszym możliwym kodem. Ale jednak za krótko. Oprócz statycznej funkcji main musisz mieć jeszcze run w klasie implementującej CommandLineRunner. Spring sam utworzy Ci egzemplarz tej klasy. Może to być osobny Bean, jak w przykładzie, albo nawet wystarczy public class KlasaStartowa implements CommandLineRunner.


Przeważnie ignoruję niezarejestrowanych użytkowników.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.