Projeyi öncelikle forklayın ve clone edin. Daha sonra projeyi IntellijIDEA kullanarak açınız. README.md dosyasını dikkatli bir şekilde okuyarak istenenleri yapmaya çalışın. Proje sayımız ilerledikçe proje yönetimimizi kolaylaştırmak adına projelerimizi belli klasör kalıplarında saklamak işimizi kolaylaştırmak adına iyi bir alışkanlıktır. Örnek bir Lokasyon: Workintech/Sprint_1/Etud.
- Proje içerisinde
Spring Web,Spring Boot Securitydependency mutlaka olmalı. - Maven dependency management sistemini kullanarak tüm dependencyleri install edin.
- Uygulamanızı
9000portundan ayağa kaldırın. - Bir banka için rest api dizayn etmeniz istenmektedir.
- schema olarak
bankisminde bir schema oluşturun ve tüm veritabanı tablolarınızı bu schema içerisinde tanımlayın.
- Spring Boot Security ile yapılabilen security türlerini tanımak ve uygulamak
- main metodunuzun olduğu paket altında
controller,config,entity,dao,serviceisminde 5 adet daha paket oluşturunuz. - Project Lombok'u dependency olarak uygulamanıza ekleyin.
entitypaketinin altına JDBCAuthentication içinMemberadında bir sınıf tanımlayınız. İçerisinde instance variable olarakid, email, passwordisminde 3 tane değişken oluşturun.entitypaketinin altına JDBCAuthentication içinRoleadında bir sınıf oluşturunuz içerisineid, authorityadında 2 field ekleyiniz.- Member ve Role arasında many-to-many bir ilişki tanımlamalısınız.
entitypaketinin altına JDBCAuthentication içinAccountadında bir sınıf tanımlayınız. İçerisinde instance variable olarakid, nameisminde 2 tane değişken oluşturun.daopaketinin altınaMemberRepositoryadinda bir interface tanımlayınız. İçerisinde emaile göre kullanıcıları almalı.- Lombok ve JPA annotation larını uygulayarak bütün sınıfı bir veritabanı tablosu olucak şekilde işaretleyiniz.
application.propertiesdosyanızı kullanarak veritabanı bağlantınızı kurun.- Spring uygulamasının veritabanı loglarını açarak veritabanına yolladığınız her sorguyu inceleyin.
- dto paketi altında
RegisterResponseveRegistrationMemberadında 2 tane record tanımlayın. RegisterResponseAuthController sınıfında register metodunun dönüş tipi olmalıdır.RegistrationMemberAuthController sınıfında register metodunun parametresinin tipi olmalıdır.
- Service ve Dao paketi katmanlarını yazmalısınız.
- Account objesi MVC kurallarına uygun olarak veritabanı işlemlerini yapabilmeli.
- CRUD işlemlerini Service katmanı karşılayabilmeli
controllerpaketi altındaAccountController, AuthControlleradında 2 tane controller yazmalısınız.- AccountService sınıfını AccountController sınıfı altında
Dependency Injectionyöntemini kullanarak çağırınız. - İlk olarak Member kaydebilmek için [POST]/workintech/auth/register şeklinde bir endpoint tanımlayın ve buradan bir adet user rolünde bir adet admin rolünde kullanıcı tanımlayın.
- Amacımız CRUD işlemlerini tanımlayan endpointler yazmak.
- [GET]/workintech/accounts/ => tüm account listini dönmeli.
- [GET]/workintech/accounts/{id} => İlgili id deki account objesini dönmeli.
- [POST]/workintech/accounts => Bir adet account objesini veritabanına kaydeder.
- [PUT]/workintech/accounts/{id} => İlgili id deki account objesinin değerlerini yeni gelen data ile değiştirir.
- [DELETE]/workintech/accounts/{id} => İlgili id değerindeki account objesini veritabanından siler.
application.propertiesdosyasına kendi kullanıcı isminizi ve şifrenizi giriniz.- Basic auth yöntemini kullanarak sistemdeki tüm endpointlere ulaşmayı deneyiniz.
- JDBCAuthentication yöntemi ile tüm endpointlere ulaşmayı deneyiniz.
- [POST]/workintech/auth/register => member tablosunda yeni bir kullanıcı oluşturmalı.
- [GET] requestlerine
user ve adminrolündeki kullanıcılar request atabilmeli. - [POST], [PUT], [DELETE] requestlerine sadece
adminrolündeki kullanıcılar request atabilir. - OAuth2 yöntemini kullanarak Github ile uygulamanızdaki [GET]endpointlerine ulaşmayı deneyiniz.