Spring dependency injection bez adnotacji @Autowired

0

Hej,

Tworzę sobie Beana

 
@Bean
	public MessageService getMessageService(){
		return new EmailService();
	}
 

Następnie wstrzykuje beana przez konstruktor

 
@Controller
private final Publication publication;

	private final MessageService message;
	
        @Autowired
	public PublicationController(MessageService message) {
		
		this.message = message;
		
	}

Bez adnotacji @Autowired też działa, message nie jest nullem a program działa poprawnie.
Czy może ktoś mi powiedzieć dlaczego mimo adnotacji obiekt zostaje wstrzyknięty?

To jest psełdokod pisany z palca do celów poglądowych

2

Spring 4.3

https://docs.spring.io/spring/docs/4.3.0.SPR-13777-SNAPSHOT/spring-framework-reference/html/new-in-4.3.html

It is no longer necessary to specify the @Autowired annotation if the target bean only define one constructor.

2

@andrew007 Świetnie, że chcesz się wykazać, ale autor wyraźnie wołał mnie. Nie każdy ma możliwość przez cały czas w pracy siedzieć na 4p.

0

Działa bo Spring stara się wychodzić na przeciw ludziom którzy nie bardzo rozumieja co robią, przykładem na to jest Spring Boot ;) Tutaj masz obiekt zarządzany (@Controller) więc Spring musi go jakoś utworzyć i zwyczajnie domyśla się że wszystkie parametry konstruktora trzeba w takiej sytuacji wstrzykiwać.

0

Wszystko jasne dzięki :)

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.