Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Adnotacja @Service ma dokładnie takie samo działanie jak @Component jednak zaleca się jej stosowanie w przypadku klas usług(Service) służących do zarządzania obiektami biznesowymi. Tą adnotacją są oznaczone klasy implementujące interfejsy usług np. UserService, PositionService itd.

Opis i przykład użycia adnotacji @Service

Sposób 3 - adnotacja @Repository

@Repository różni się od pozostałych tym, że konwertuje wyjątki rzucone podczas błędu wykonania operacji na bazie danych na standardowy wyjątek z rodziny DataAccessException. Dzięki temu niezależnie od rodzaju bazy danych, sterownika, czy biblioteki jakiej używamy zawsze otrzymamy taki sam wyjątek. Tą adnotacją są oznaczone klasy implementujące interfejsy usług np. UserDao, PositionDao itd.

Opis i przykład użycia adnotacji @Repository

Sposób 4 - adnotacja @Controller

Najbardziej rozbudowany mechanizm pozwalający na definiowanie serwletów w bardzo prosty sposób. Spójrzmy na przykład:

Code Block
languagejava
titleKlasa z adnotacją @Controller
@Controller
@RequestMapping( "/custom" )
public class CustomController
{
	@Autowired
	private PositionService ps;
 
	@RequestMapping( "positions" )
    public @ResponseBody List<User> getPositions( @RequestParam String positionName )
    {
		return ps.getByName(positionName);
	}
}

Po pierwsze dodajemy adnotację @Controller dzięki temu system widzi klasę jako serwlet. Ścieżka do serwletu oznaczonego adnotacją @Controller zaczyna się od /api/. Adnotacja @RequestMapping pozwala na zdefiniowanie ścieżki do serwletu. Jak widzimy w przykładzie mamy dwie takie adnotacje, które wraz z przedrostkiem /api/ tworzą ścieżkę do serwletu. Dla naszego przykładu ścieżka będzie następująca: /api/custom/positions. Dzięki oznaczeniu @ResponseBody odpowiedź serwletu jest automatycznie konwertowana do formatu JSON. Ostatnia adnotacja @RequestParam pozwala na odczytanie parametru przekazanego przez serwlet. Parametr może być również obiektem zakodowanym w JSON, wtedy system automatycznie go zdekoduje.Opis tworzenia serwletu znajduje się tutaj: Tworzenie serwletów

 

Info
titleUwaga

Aby klasa mogła zostać zeskanowana musi znajdować się w drzewie pakietu com.suncode


...