Spring @Bean

0

Witam
uczę się springa i kojarzę jak działa np autowired ale mam problem z @Bean
chodzi mi o użycie w spring 4 możemy zrobić klasę zawierającą konfiguracje
i tam zamieścić definicje beanów właśnie oznaczając metody adnotacją @Bean.
Rozumiem, że wtedy spring utworzy mi takiego beana jak tam podam i doda mi go to kontextu także będę mógł z niego korzystać w aplikacji. To z czym mam problem to jakie beany w ten sposób powinienem definiować.
Wydaje mi się, że chodzi o beany z jakichś biblotek z których chcę korzystać i jeśli tak to w pliku konfiguracyjnym do tych beanów dodaje odpowiednią konfigurację -> parametryzuję te beany z bibliotek pod moją aplikację.
czy dobrze to rozumiem?

0

Tak.

0

Nie wiem czy dobrze zrozumiałem o co Ci chodzi więc wklejam przykład:

 
@Bean(name = "dataSource")
	public DataSource dataSource(){
		BasicDataSource dataSource = new BasicDataSource();
		dataSource.setDriverClassName("org.postgresql.Driver");
		dataSource.setUrl("jdbc:postgresql://localhost/expenses_manager");
		dataSource.setUsername("java");
		dataSource.setPassword("...");
		return dataSource;
	}

Jest to Bean DataSource który służy do konfiguracji połączenia z bazą danych. Nie jest to klasa stworzona przeze mnie więc tylko ją dostosowuję.
Klasy które sam tworze oznaczam jako @Repository/@Service/@RestController czy @Component - one wtedy są automatycznie dodawane do contextu Springa podczas skanowania

0

Pomyśl o @Bean jako o factory pattern. To coś co pozwala powiedzieć kontenerowi DI w jaki sposób ma stworzyć obiekt, który będziesz wstrzykiwał (@Autowired / @Inject).
https://spring.io/blog/2011/08/09/what-s-a-factorybean

Po co? Łatwiej pisać testy dla takiej fabryki niż dla konstruktora (mniej zależności między klasami).

1 użytkowników online, w tym zalogowanych: 0, gości: 1