Getting Started | Building an Application with Spring Boot
Build an application gyms with Spring boot and Angular use Jpa
We will continue to complete gym project in this part We are going to added the services, the implements, and controllers
The services
Service Components are the class file which contains @Service annotation. These class files are used to write business logic in a different layer, separated from @RestController class file. The logic for creating a service component class file is shown here
We will create eight interfaces in service package:
-> ArbitrateService.java-> GymService.java
-> PaymentService.java
-> SportService.java
-> SportsManService.java
-> TrainService.java
-> UserService.java
-> WorktimeService.java
Here, we are creating a service interface
ArbitrateService.java This service interface content two methods addArbitrate and editArbitrate
src/main/java/com/gym/service/ArbitrateService.java):
package com.gym.service;
import com.gym.model.Arbitrate;
import com.gym.model.Gym;
public interface ArbitrateService {
Arbitrate addArbitrateForGym(Arbitrate arbitrate, Gym gym);
Arbitrate editArbitrate(Arbitrate arbitrate, Arbitrate existsArbitrate);
}
Here, we are creating a service interface
GymService.java This service interface content two methods addGym and editGym
src/main/java/com/gym/service/GymService.java):
package com.gym.service;
import com.gym.model.Gym;
public interface GymService {
Gym addGym(Gym gym);
Gym editGym(Gym gym, Gym existsGym);
}
Here, we are creating a service interface
PaymentService.java This service interface content two methods addPayment and editPayment
src/main/java/com/gym/service/PaymentService.java):
package com.gym.service;
import com.gym.model.Payment;
import com.gym.model.SportsMan;
public interface PaymentService {
Payment addPayment(Payment payment, SportsMan sportsMan);
Payment editPayment(Payment payment, Payment existPayment);
}
Here, we are creating a service interface
SportService.java This service interface content two methods addSport and editSport
src/main/java/com/gym/service/SportService.java):
package com.gym.service;
import com.gym.model.Gym;
import com.gym.model.Sport;
public interface SportService {
Sport addSport(Sport sport, Gym gym);
Sport editSport(Sport sport, Sport existSport);
}
Here, we are creating a service interface
SportsManService.java This service interface content two methods addSportsMan and editSportsMan
src/main/java/com/gym/service/SportsManService.java):
package com.gym.service;
import com.gym.model.SportsMan;
public interface SportsManService {
SportsMan addSportsMan(SportsMan sportsMan);
SportsMan editSportsMan(SportsMan sportsMan, SportsMan existSportsMan);
}
Here, we are creating a service interface
TrainService.java This service interface content two methods addTrain and editTrain
src/main/java/com/gym/service/TrainService.java):
package com.gym.service;
import com.gym.model.Gym;
import com.gym.model.Train;
public interface TrainService {
Train addTrainForGym(Train train, Gym gym);
Train editTrain(Train train, Train existsTrain);
}
Here, we are creating a service interface
UserService.java This service interface content five methods addUser, editUser, findUserById, findUserByUsername and deleteUser
src/main/java/com/gym/service/UserService.java):
package com.gym.service;
import java.util.Optional;
import com.gym.model.User;
public interface UserService {
User addUser(User user);
User editUser(User user, Long id);
User findUserById(Long id);
Optional<User> findUserByUsername(String username);
void deleteUser(long id);
}
Here, we are creating a service interface
WorktimeService.java This service interface content two methods addWorktime and editWorktime
src/main/java/com/gym/service/WorktimeService.java):
package com.gym.service;
import com.gym.model.Gym;
import com.gym.model.Worktime;
public interface WorktimeService {
Worktime addWorktimeForGym(Worktime worktime, Gym gym);
Worktime editWorktime(Worktime worktime, Worktime existWorktime, Gym gym);
}
The Implements
Here we will use the implements for the Strategy pattern is a software design pattern commonly used for developing User interface that divides the related program logic into three interconnected elements.
The class that implements the Interface with @Component and @Transactional annotations is as shown −
We will create eigth classes in impl package;
-> ArbitrateServiceImpl.java-> GymServiceImpl.java
-> PaymentServiceImpl.java
-> SportServiceImpl.java
-> SportsManImpl.java
-> TrainServiceImpl.java
-> UserServiceImpl.java
-> WorktimeServiceImpl.java
Here, we are creating an implement class
ArbitrateServiceImpl.java In this class we will implement ArbitrateService and @Override the methods addArbitrate and editArbitrate
src/main/java/com/gym/impl/ArbitrateServiceImpl.java):
package com.gym.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.gym.dao.ArbitrateDao;
import com.gym.model.Arbitrate;
import com.gym.model.Gym;
import com.gym.service.ArbitrateService;
@Component
public class ArbitrateServiceImpl implements ArbitrateService {
@Autowired
private ArbitrateDao arbitrateDao;
@Override
public Arbitrate editArbitrate(Arbitrate arbitrate, Arbitrate existArbitrate) {
existArbitrate.setName(arbitrate.getName());
return arbitrateDao.save(existArbitrate);
}
@Override
public Arbitrate addArbitrateForGym(Arbitrate arbitrate, Gym gym) {
gym.addArbitrate(arbitrate);
return arbitrateDao.save(arbitrate);
}
}
Here, we are creating an implement classe
GymServiceImpl.java In this class we will implement GymService and @Override the methods addGym and editGym
src/main/java/com/gym/impl/GymServiceImpl.java):
package com.gym.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.gym.dao.GymDao;
import com.gym.model.Gym;
import com.gym.service.GymService;
@Component
public class GymServiceImpl implements GymService {
@Autowired
private GymDao gymDao;
@Override
public Gym addGym(Gym gym) {
return gymDao.save(gym);
}
@Override
public Gym editGym(Gym gym, Gym existGym) {
existGym.setName(gym.getName());
existGym.setAddress(gym.getAddress());
existGym.setArea(gym.getArea());
existGym.setCity(gym.getCity());
existGym.setLogo(gym.getLogo());
return gymDao.save(existGym);
}
}
Here, we are creating an implement classe
PaymentServiceImpl.java In this class we will implement PaymentService and @Override the methods addPayment and editPayemnt
src/main/java/com/gym/impl/PaymentServiceImpl.java):
package com.gym.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.gym.dao.PaymentDao;
import com.gym.model.Payment;
import com.gym.model.SportsMan;
import com.gym.service.PaymentService;
@Component
public class PaymentServiceImpl implements PaymentService {
@Autowired
private PaymentDao paymentDao;
@Override
public Payment addPayment(Payment payment, SportsMan sportsMan) {
sportsMan.addPayment(payment);
return paymentDao.save(payment);
}
@Override
public Payment editPayment(Payment payment, Payment existPayment) {
existPayment.setCost(payment.getCost());
existPayment.setDate(payment.getDate());
existPayment.setDuration(payment.getDuration());
return paymentDao.save(existPayment);
}
}
Here, we are creating an implement classe
SportServiceImpl.java In this class we will implement SportService and @Override the methods addArbitrate and editArbitrate
src/main/java/com/gym/impl/SportServiceImpl.java):
package com.gym.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.gym.dao.SportDao;
import com.gym.model.Gym;
import com.gym.model.Sport;
import com.gym.service.SportService;
@Component
public class SportServiceImpl implements SportService {
@Autowired
private SportDao sportDao;
@Override
public Sport addSport(Sport sport, Gym gym) {
gym.addSportForGym(sport);
return sportDao.save(sport);
}
@Override
public Sport editSport(Sport sport, Sport existSport) {
existSport.setName(sport.getName());
existSport.setDescription(sport.getDescription());
existSport.setPhoto(sport.getPhoto());
return sportDao.save(existSport);
}
}
Here, we are creating an implement classe
SportsManImpl.java In this class we will implement SportsManService and @Override the methods addSportsMan and editSportsMan
src/main/java/com/gym/impl/SportsManImpl.java):
package com.gym.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.gym.dao.SportsManDao;
import com.gym.model.SportsMan;
import com.gym.service.SportsManService;
@Component
public class SportsManImpl implements SportsManService {
@Autowired
private SportsManDao sportsManDao;
@Override
public SportsMan addSportsMan(SportsMan sportsMan) {
return sportsManDao.save(sportsMan);
}
@Override
public SportsMan editSportsMan(SportsMan sportsMan, SportsMan existSportsMan) {
existSportsMan.setFirstName(sportsMan.getFirstName());
existSportsMan.setLastName(sportsMan.getLastName());
existSportsMan.setAge(sportsMan.getAge());
existSportsMan.setSex(sportsMan.getSex());
existSportsMan.setAvatar(sportsMan.getAvatar());
return sportsManDao.save(existSportsMan);
}
}
Here, we are creating an implement classe
TrainServiceImpl.java In this class we will implement ArbitrateService and @Override the methods addTrain and editTrain
src/main/java/com/gym/impl/TrainServiceImpl.java):
package com.gym.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.gym.dao.TrainDao;
import com.gym.model.Gym;
import com.gym.model.Train;
import com.gym.service.TrainService;
@Component
public class TrainServiceImpl implements TrainService {
@Autowired
private TrainDao trainDao;
@Override
public Train addTrainForGym(Train train, Gym gym) {
gym.addTrain(train);
return trainDao.save(train);
}
@Override
public Train editTrain(Train train, Train exisTrain) {
exisTrain.setName(train.getName());
return trainDao.save(exisTrain);
}
}
Here, we are creating an implement classe
UserServiceImpl.java In this class we will implement UserService and @Override the methods addUser, editUser, findUserById, findUserByUsername and deleteUser
src/main/java/com/gym/impl/UserServiceImpl.java):
package com.gym.impl;
import java.util.Optional;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.gym.dao.UserDao;
import com.gym.model.User;
import com.gym.service.UserService;
@Transactional
@Component
public class UserServiceImpl implements UserService {
@Override
private UserDao userDao;
@Override
public User addUser(User user) {
return userDao.save(user);
}
@Override
public User findUserById(Long id) {
return userDao.findById(id).orElse(null);
}
@Override
public User editUser(User user, Long id) {
User exsitUser = userDao.findById(id).orElse(null);
exsitUser.setUsername(user.getUsername());
exsitUser.setPassword(user.getPassword());
exsitUser.setAdmin(user.isAdmin());
return userDao.save(exsitUser);
}
@Override
public Optional<User> findUserByUsername(String username) {
Optional<User> users = userDao.findByUsername(username);
return users;
}
@Override
public void deleteUser(long id) {
User exsitUser = userDao.findById(id).orElse(null);
userDao.delete(exsitUser);
}
}
Here, we are creating an implement classe
WorktimeServiceImpl.java In this class we will implement WorktimeService and @Override the methods addWorktime and editWorktime
src/main/java/com/gym/impl/WorktimeServiceImpl.java):
package com.gym.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.gym.dao.WorktimeDao;
import com.gym.model.Gym;
import com.gym.model.Worktime;
import com.gym.service.WorktimeService;
@Component
public class WorktimeServiceImpl implements WorktimeService {
@Autowired
private WorktimeDao worktimeDao;
@Override
public Worktime addWorktimeForGym(Worktime worktime, Gym gym) {
gym.addWorktime(worktime);
return worktimeDao.save(worktime);
}
@Override
public Worktime editWorktime(Worktime worktime, Worktime existWorktime, Gym gym) {
existWorktime.setDay(worktime.getDay());
existWorktime.setTimetable(worktime.getTimetable());
existWorktime.setEnd(worktime.getEnd());
existWorktime.setStart(worktime.getStart());
gym.addWorktime(existWorktime);
return worktimeDao.save(existWorktime);
}
}
The manager services
It stands for Implementation. It's a Java convention. Often in java (particularly J2EE) you will get an object from some factory, and then use it. That object's type is often given to you as an interface, so that you don't need to know the actual class, just its methods.
We'll be developing the classes managers services. One possible reason for every service class to have an interface is that it makes interactions with sophisticated frameworks (Spring, JEE) much simpler. This is because Java can simply generate interceptor objects against interfaces.
We will create seven interfaces in manager package:
-> ArbitrateManagerService.java-> GymManagerService.java
-> PaymentMAnagerService.java
-> SportManagerService.java
-> SportsManagerManService.java
-> TrainManagerService.java
-> WorktimeManagerService.java
Here, we are creating a manager service
ArbitrateManagerService.java In this interface we'll create these Methods addArbitrateForSport, addArbitrateForGym, editArbitrate, deleteArbitrate, findArbitrateById, findArbitratesForSport, findArbitratesForGym, findAllArbitrates
src/main/java/com/gym/manager/ArbitrateManagerService.java):
package com.gym.manager;
import java.util.List;
import com.gym.dto.ArbitrateDto;
public interface ArbitrateManagerService {
void addArbitrateForSport(long idArbitrate, long idSport);
ArbitrateDto addArbitrateForGym(ArbitrateDto arbitrateDto, long idGym);
ArbitrateDto editArbitrate(ArbitrateDto arbitrateDto, long id);
void deleteArbitrate(long id);
ArbitrateDto findArbitrateById(long id);
List<ArbitrateDto> findArbitratesForSport(long idSport);
List<ArbitrateDto> findArbitratesForGym(long id);
List<ArbitrateDto> findAllArbitrates();
}
Here, we are creating a manager service
GymManagerService.java In this interface we'll create these Methods addGym, editGym, deleteGym, findGymById and findAllGyms
src/main/java/com/gym/manager/GymManagerService.java):
package com.gym.manager;
import java.util.List;
import com.gym.dto.GymDto;
public interface GymManagerService {
GymDto addGym(GymDto gymDto);
GymDto editGym(GymDto gymDto, Long id);
void deleteGym(Long id);
GymDto findGymById(Long id);
List<GymDto> findAllGyms();
}
Here, we are creating a manager service
PaymentManagerService.java In this interface we'll create these Methods addPayment, editPayment, deletePayment, findPaymentById and findPaymentsForSportsMan
src/main/java/com/gym/manager/PaymentManagerService.java):
package com.gym.manager;
import java.util.List;
import com.gym.dto.PaymentDto;
public interface PaymentManagerService {
PaymentDto addPayment(PaymentDto payment, Long idSportsMan);
PaymentDto editPayment(PaymentDto payment, Long id);
void deletePayment(Long id);
PaymentDto findPaymentById(Long id);
List<PaymentDto> findPaymentsForSportsMan(Long idSportsMan);
}
Here, we are creating a manager service
SportManagerService.java In this interface we'll create these Methods addSportForGym, addSportForSportsMan, editSport, deleteSport, deleteSport, findSportById, findSportsForSportsMan, findSportsForGym and editArbitrate
src/main/java/com/gym/manager/SportManagerService.java):
package com.gym.manager;
import java.util.List;
import com.gym.dto.SportDto;
public interface SportManagerService {
SportDto addSportForGym(SportDto sportDto, Long idGym);
void addSportForSportsMan(long idSport, long idSportsMan);
SportDto editSport(SportDto sportDto, Long id);
void deleteSport(Long id);
SportDto findSportById(Long id);
List<SportDto> findSportsForSportsMan(Long idSportsMan);
List<SportDto> findSportsForGym(Long idGym);
}
Here, we are creating a manager service
SportsManManagerService.java In this interface we'll create these Methods addSportsMan, editSportsMan, deleteSportsMan, findSportsManById and findAllSportsMans
src/main/java/com/gym/manager/SportsManManagerService.java):
package com.gym.manager;
import java.util.List;
import com.gym.dto.SportsManDto;
public interface SportsManManagerService {
SportsManDto addSportsMan(SportsManDto sportsManDto);
SportsManDto editSportsMan(SportsManDto sportsManDto, Long id);
void deleteSportsMan(Long id);
SportsManDto findSportsManById(Long id);
List<SportsManDto> findAllSportsMans();
}
Here, we are creating a manager service
TrainManagerService.java In this interface we'll create these Methods addArbitrate and editArbitrate
src/main/java/com/gym/manager/TrainManagerService.java):
package com.gym.manager;
import java.util.List;
import com.gym.dto.TrainDto;
public interface TrainManagerService {
TrainDto addTrainForGym(TrainDto trainDto, long idGym);
void addTrainForSport(long idTrain, long idSport);
TrainDto editTrain(TrainDto trainDto, long id);
void deleteTrain(long id);
TrainDto findTrainById(long id);
List<TrainDto> findAllTrains();
List<TrainDto> findTrainsForSport(long idSport);
List<TrainDto> findTrainsForGym(long idGym);
}
Here, we are creating a manager service
WorktimeManangerService.java In this interface we'll create these Methods addSportsManForWork, addWorktimeForGym, editWorktime, deleteWorktime, findWorktimeById, findWorktimesForGym and findSportsManForWorktime
src/main/java/com/gym/manager/WorktimeManangerService.java):
package com.gym.manager;
import java.util.List;
import com.gym.dto.SportsManDto;
import com.gym.dto.WorktimeDto;
public interface WorktimeManangerService {
void addSportsManForWork(long idSprtsMan, long idWorktime);
WorktimeDto addWorktimeForGym(WorktimeDto worktimeDto, long idGym);
WorktimeDto editWorktime(WorktimeDto worktimeDto, Long id, long idGym);
void deleteWorktime(Long id);
WorktimeDto findWorktimeById(Long id);
List<WorktimeDto> findWorktimesForGym(Long idGym);
List<SportsManDto> findSportsManForWorktime(Long idWorktime);
}
The managers classes Implementation
An impl class is usually a class that implements the behaviour described by one of these interfaces. While the internal implementation class, With transactions configured, we can now annotation a bean with @Transactional and @Service either at the class or method level. Then conversion Entity to DTO. This is stands for Data Transfer Object and is a simple Plain Old Java Object which contains class properties and getters and settings methods for accessing those properties.
We will create seven interfaces in managerImpl package:
-> ArbitrateManagerServiceImpl.java-> GymManagerServiceImpl.java
-> PaymentManagerServiceImpl.java
-> SportManagerServiceImpl.java
-> SportsManManagerServiceImpl.java
-> TrainManagerServiceImpl.java
-> WorktimeManagerServiceImpl.java
Here, we are creating a manager class impl
ArbitrateManagerServiceImpl.java In this class we'll implementaion ArbitrateManagerService and @Override All methods
src/main/java/com/gym/managerImp/ArbitrateManagerServiceImpl.java):
package com.gym.managerImpl;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gym.dao.ArbitrateDao;
import com.gym.dao.GymDao;
import com.gym.dao.SportDao;
import com.gym.dto.ArbitrateDto;
import com.gym.manager.ArbitrateManagerService;
import com.gym.model.Arbitrate;
import com.gym.model.Gym;
import com.gym.model.OrikaBeanMapper;
import com.gym.model.Sport;
import com.gym.service.ArbitrateService;
@Transactional
@Service
public class ArbitrateManagerServiceImpl implements ArbitrateManagerService {
@Autowired
private OrikaBeanMapper orikaBeanMapper;
@Autowired
private ArbitrateService arbitrateService;
@Autowired
private SportDao sportDao;
@Autowired
private ArbitrateDao arbitrateDao;
@Autowired
private GymDao gymDao;
@Override
public ArbitrateDto addArbitrateForGym(ArbitrateDto arbitrateDto, long idGym) {
Gym gym = gymDao.findById(idGym).orElse(null);
Arbitrate arbitrate = orikaBeanMapper.map(arbitrateDto, Arbitrate.class);
return orikaBeanMapper.convertDTO(arbitrateService.addArbitrateForGym(arbitrate, gym), ArbitrateDto.class);
}
@Override
public ArbitrateDto editArbitrate(ArbitrateDto arbitrateDto, long id) {
Arbitrate existsArbitrate = arbitrateDao.findById(id).orElse(null);
Arbitrate arbitrate = orikaBeanMapper.map(arbitrateDto, Arbitrate.class);
return orikaBeanMapper.convertDTO(
arbitrateService.editArbitrate(arbitrate, existsArbitrate), ArbitrateDto.class);
}
@Override
public void deleteArbitrate(long id) {
Arbitrate existsArbitrate = arbitrateDao.findById(id).orElse(null);
arbitrateService.delete(existsArbitrate);
}
@Override
public ArbitrateDto findArbitrateById(long id) {
return orikaBeanMapper.convertDTO(arbitrateDao.findById(id).orElse(null), ArbitrateDto.class);
}
@Override
public List<ArbitrateDto> findArbitratesForSport(long idSport) {
Sport sport = sportDao.findById(idSport).orElse(null);
List<Arbitrate> arbitrates = sport.getArbitrates();
return orikaBeanMapper.convertListDTO(arbitrates, ArbitrateDto.class);
}
@Override
public void addArbitrateForSport(long idArbitrate, long idSport) {
Sport sport = sportDao.findById(idSport).orElse(null);
Arbitrate arbitrate = arbitrateDao.findById(idArbitrate).orElse(null);
sport.addArbitrate(arbitrate);
}
@Override
public List<ArbitrateDto> findArbitratesForGym(long idGym) {
Gym gym = gymDao.findById(idGym).orElse(null);
List<Arbitrate> arbitrates = gym.getArbitrates();
return orikaBeanMapper.convertListDTO(arbitrates, ArbitrateDto.class);
}
@Override
public List<ArbitrateDto> findAllArbitrates() {
List<Arbitrate> arbitrates = arbitrateDao.findAll();
return orikaBeanMapper.convertListDTO(arbitrates, ArbitrateDto.class);
}
}
Here, we are creating a manager class impl
GymManagerServiceImpl.java In this class we'll implementaion GymManagerService and @Override All methods
src/main/java/com/gym/managerImp/GymManagerServiceImpl.java):
package com.gym.managerImpl;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gym.dao.GymDao;
import com.gym.dto.GymDto;
import com.gym.manager.GymManagerService;
import com.gym.model.Gym;
import com.gym.model.OrikaBeanMapper;
import com.gym.service.GymService;
@Transactional
@Service
public class GymManagerServiceImpl implements GymManagerService {
@Autowired
private OrikaBeanMapper orikaBeanMapper;
@Autowired
private GymService gymService;
@Autowired
private GymDao gymDao;
@Override
public GymDto addGym(GymDto gymDto) {
Gym gym = orikaBeanMapper.map(gymDto, Gym.class);
return orikaBeanMapper.convertDTO(gymService.addGym(gym), GymDto.class);
}
@Override
public GymDto editGym(GymDto gymDto, Long id) {
Gym gym = orikaBeanMapper.map(gymDto, Gym.class);
Gym existsGym = gymDao.findById(id).orElse(null);
return orikaBeanMapper.convertDTO(gymService.editGym(gym, existsGym), GymDto.class);
}
@Override
public void deleteGym(Long id) {
Gym existsGym = gymDao.findById(id).orElse(null);
gymDao.delete(existsGym);
}
@Override
public GymDto findGymById(Long id) {
return orikaBeanMapper.convertDTO(gymDao.findById(id).orElse(null), GymDto.class);
}
@Override
public List<GymDto> findAllGyms() {
List<Gym> gyms = gymDao.findAll();
return orikaBeanMapper.convertListDTO(gyms, GymDto.class);
}
}
Here, we are creating a manager class impl
PaymentManagerServiceImpl.java In this class we'll implementaion PaymentManagerService and @Override All methods
src/main/java/com/gym/managerImpl/PaymentManagerServiceImpl.java):
package com.gym.managerImpl;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gym.dao.PaymentDao;
import com.gym.dao.SportsManDao;
import com.gym.dto.PaymentDto;
import com.gym.manager.PaymentManagerService;
import com.gym.model.OrikaBeanMapper;
import com.gym.model.Payment;
import com.gym.model.SportsMan;
import com.gym.service.PaymentService;
@Transactional
@Service
public class PaymentManagerServiceImpl implements PaymentManagerService {
@Autowired
private OrikaBeanMapper orikaBeanMapper;
@Autowired
private PaymentService paymentService;
@Autowired
private PaymentDao paymentDao;
@Autowired
private SportsManDao sportsManDao;
@Override
public PaymentDto addPayment(PaymentDto paymentDto, Long idSportsMan) {
SportsMan sportsMan = sportsManDao.findById(idSportsMan).orElse(null);
Payment payment = orikaBeanMapper.map(paymentDto Payment.class);
return orikaBeanMapper.convertDTO(paymentService.addPayment(payment, sportsMan), PaymentDto.class);
}
@Override
public PaymentDto editPayment(PaymentDto paymentDto, Long id) {
Payment payment = orikaBeanMapper.map(paymentDto, Payment.class);
Payment existsPayment = paymentDao.findById(id).orElse(null);
return orikaBeanMapper.convertDTO(paymentService.editPayment(payment, existsPayment), PaymentDto.class);
}
@Override
public void deletePayment(Long id) {
Payment existsPayment = paymentDao.findById(id).orElse(null);
paymentDao.delete(existsPayment);
}
@Override
public PaymentDto findPaymentById(Long id) {
return orikaBeanMapper.convertDTO(paymentDao.findById(id).orElse(null), PaymentDto.class);
}
@Override
public List<PaymentDto> findPaymentsForSportsMan(Long idSportsMan) {
SportsMan sportsMan = sportsManDao.findById(idSportsMan).orElse(null);
List<Payment> payments = sportsMan.getPayments();
return orikaBeanMapper.convertListDTO(payments, PaymentDto.class);
}
}
Here, we are creating a manager class impl
SportManagerServiceImpl.java In this class we'll implementaion SportManagerService and @Override All methods
src/main/java/com/gym/managerImpl/SportManagerServiceImpl.java):
package com.gym.managerImpl;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gym.dao.GymDao;
import com.gym.dao.SportDao;
import com.gym.dao.SportsManDao;
import com.gym.dto.SportDto;
import com.gym.manager.SportManagerService;
import com.gym.model.Gym;
import com.gym.model.OrikaBeanMapper;
import com.gym.model.Sport;
import com.gym.model.SportsMan;
import com.gym.service.SportService;
@Transactional
@Service
public class SportManagerServiceImpl implements SportManagerService {
@Autowired
private OrikaBeanMapper orikaBeanMapper;
@Autowired
private SportDao sportDao;
@Autowired
private SportService sportService;
@Autowired
private SportsManDao sportsManDao;
@Autowired
private GymDao gymDao;
@Override
public SportDto addSportForGym(SportDto sportDto, Long idGym) {
Sport sport = orikaBeanMapper.map(sportDto, Sport.class);
Gym gym = gymDao.findById(idGym).orElse(null);
return orikaBeanMapper.convertDTO(sportService.addSport(sport, gym), SportDto.class);
}
@Override
public SportDto editSport(SportDto sportDto, Long id) {
Sport sport = orikaBeanMapper.map(sportDto, Sport.class);
Sport existsSport = sportDao.findById(id).orElse(null);
return orikaBeanMapper.convertDTO(sportService.editSport(sport, existsSport), SportDto.class);
}
@Override
public void deleteSport(Long id) {
Sport existsSport = sportDao.findById(id).orElse(null);
sportDao.delete(existsSport);
}
@Override
public SportDto findSportById(Long id) {
return orikaBeanMapper.convertDTO(sportDao.findById(id).orElse(null), SportDto.class);
}
@Override
public List<SportDto> findSportsForSportsMan(Long idSportsMan) {
SportsMan sportsMan = sportsManDao.findById(idSportsMan).orElse(null);
List<Sport> sports = sportsMan.getSports();
return orikaBeanMapper.convertListDTO(sports, SportDto.class);
}
@Override
public void addSportForSportsMan(long idSport, long idSportsMan) {
SportsMan sportsMan = sportsManDao.findById(idSportsMan).orElse(null);
Sport existsSport = sportDao.findById(idSport).orElse(null);
sportsMan.addSport(existsSport);
}
@Override
public List<SportDto> findSportsForGym(Long idGym) {
Gym gym = gymDao.findById(idGym).orElse(null);
List<Sport> sports = gym.getSports();
return orikaBeanMapper.convertListDTO(sports, SportDto.class);
}
}
Here, we are creating a manager class impl
SportsManManagerServiceImpl.java In this class we'll implementaion SportsManManagerService and @Override All methods
src/main/java/com/gym/managerImpl/SportsManManagerServiceImpl.java):
package com.gym.managerImpl;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gym.dao.SportsManDao;
import com.gym.dto.SportsManDto;
import com.gym.manager.SportsManManagerService;
import com.gym.model.OrikaBeanMapper;
import com.gym.model.SportsMan;
import com.gym.service.SportsManService;
@Transactional
@Service
public class SportsManManagerServiceImpl implements SportsManManagerService {
@Autowired
private OrikaBeanMapper orikaBeanMapper;
@Autowired
private SportsManDao sportsManDao;
@Autowired
private SportsManService sportsManService;
@Override
public SportsManDto addSportsMan(SportsManDto sportsManDto) {
SportsMan sportsMan = orikaBeanMapper.map(sportsManDto, SportsMan.class);
return orikaBeanMapper.convertDTO(sportsManService.addSportsMan(sportsMan), SportsManDto.class);
}
@Override
public SportsManDto editSportsMan(SportsManDto sportsManDto, Long id) {
SportsMan sportsMan = orikaBeanMapper.map(sportsManDto, SportsMan.class);
SportsMan existSportsMan = sportsManDao.findById(id).orElse(null);
return orikaBeanMapper.convertDTO(sportsManService.editSportsMan(existSportsMan, sportsMan), SportsManDto.class);
}
@Override
public void deleteSportsMan(Long id) {
SportsMan existSportsMan = sportsManDao.findById(id).orElse(null);
sportsManDao.delete(existSportsMan);
}
@Override
public SportsManDto findSportsManById(Long id) {
return orikaBeanMapper.convertDTO(sportsManDao.findById(id).orElse(null), SportsManDto.class);
}
@Override
public List<SportsManDto> findAllSportsMans() {
List<SportsMan> sportsMans = sportsManDao.findAll();
return orikaBeanMapper.convertListDTO(sportsMans, SportsManDto.class);
}
}
Here, we are creating a manager class impl
TrainManagerServiceImpl.java In this class we'll implementaion TrainManagerService and @Override All methods
src/main/java/com/gym/managerImpl/TrainManagerServiceImpl.java):
package com.gym.managerImpl;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gym.dao.GymDao;
import com.gym.dao.SportDao;
import com.gym.dao.TrainDao;
import com.gym.dto.TrainDto;
import com.gym.manager.TrainManagerService;
import com.gym.model.Gym;
import com.gym.model.OrikaBeanMapper;
import com.gym.model.Sport;
import com.gym.model.Train;
import com.gym.service.TrainService;
@Transactional
@Service
public class TrainManagerServiceImpl implements TrainManagerService {
@Autowired
private OrikaBeanMapper orikaBeanMapper;
@Autowired
private TrainDao trainDao;
@Autowired
private TrainService trainService;
@Autowired
private SportDao sportDao;
@Autowired
private GymDao gymDao;
@Override
public TrainDto addTrainForGym(TrainDto trainDto, long idGym) {
Gym gym = gymDao.findById(idGym).orElse(null);
Train train = orikaBeanMapper.map(trainDto, Train.class);
return orikaBeanMapper.convertDTO(trainService.addTrainForGym(train, gym), TrainDto.class);
}
@Override
public TrainDto editTrain(TrainDto trainDto, long id) {
Train train = orikaBeanMapper.map(trainDto, Train.class);
Train existsTrain = trainDao.findById(id).orElse(null);
return orikaBeanMapper.convertDTO(trainService.editTrain(train, existsTrain), TrainDto.class);
}
@Override
public void deleteTrain(long id) {
Train existsTrain = sportDao.findById(id).orElse(null);
sportDao.delete(existsTrain);
}
@Override
public TrainDto findTrainById(long id) {
return orikaBeanMapper.convertDTO(sportDao.findById(id).orElse(null), TrainDto.class);
}
@Override
public List<TrainDto> findAllTrains() {
List<Train> trains = sportDao.findAll();
return orikaBeanMapper.convertListDTO(trains, TrainDto.class);
}
@Override
public void addTrainForSport(long idTrain, long idSport) {
Sport sport = sportDao.findById(idSport).orElse(null);
Train train = sportDao.findById(idTrain).orElse(null);
sport.addTrain(train);
}
@Override
public List<TrainDto> findTrainsForSport(long idSport) {
Sport sport = sportDao.findById(idSport).orElse(null);
List<Train> trains = sport.getTrains();
return orikaBeanMapper.convertListDTO(trains, TrainDto.class);
}
@Override
public List<TrainDto> findTrainsForGym(long idGym) {
Gym gym = gymDao.findById(idGym).orElse(null);
List<Train> trains = gym.getTrains();
return orikaBeanMapper.convertListDTO(trains, TrainDto.class);
}
}
Here, we are creating a manager class impl
WorktimeManangerServiceImpl.java In this class we'll implementaion WorktimeManangerService and @Override All methods
src/main/java/com/gym/managerImpl/WorktimeManangerServiceImpl.java):
package com.gym.managerImpl;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gym.dao.GymDao;
import com.gym.dao.SportsManDao;
import com.gym.dao.WorktimeDao;
import com.gym.dto.SportsManDto;
import com.gym.dto.WorktimeDto;
import com.gym.manager.WorktimeManangerService;
import com.gym.model.Gym;
import com.gym.model.OrikaBeanMapper;
import com.gym.model.SportsMan;
import com.gym.model.Worktime;
import com.gym.service.WorktimeService;
@Transactional
@Service
public class WorktimeManangerServiceImpl implements WorktimeManangerService {
@Autowired
private OrikaBeanMapper orikaBeanMapper;
@Autowired
private WorktimeDao worktimeDao;
@Autowired
private WorktimeService worktimeService;
@Autowired
private GymDao gymDao;
@Autowired
private SportsManDao sportsManDao;
@Override
public void addSportsManForWork(long idSprtsMan, long idWorktime) {
SportsMan sportsMan = sportsManDao.findById(idSprtsMan).orElse(null);
Worktime worktime = worktimeDao.findById(idWorktime).orElse(null);
worktime.addSportsManForWork(sportsMan);
}
@Override
public WorktimeDto addWorktimeForGym(WorktimeDto worktimeDto, long idGym) {
Gym gym = gymDao.findById(idGym).orElse(null);
Worktime worktime = orikaBeanMapper.map(worktimeDto, Worktime.class);
return orikaBeanMapper.convertDTO(worktimeService.addWorktimeForGym(worktime, gym), WorktimeDto.class);
}
@Override
public WorktimeDto editWorktime(WorktimeDto worktimeDto, Long id, long idGym) {
Worktime worktime = orikaBeanMapper.map(worktimeDto, Worktime.class);
Worktime existsWorktime = worktimeDao.findById(id).orElse(null);
Gym gym = gymDao.findById(idGym).orElse(null);
return orikaBeanMapper.convertDTO(worktimeService.editWorktime(worktime, existsWorktime, gym), WorktimeDto.class);
}
@Override
public void deleteWorktime(Long id) {
Worktime existsWorktime = worktimeDao.findById(id).orElse(null);
worktimeDao.delete(existsWorktime);
}
@Override
public WorktimeDto findWorktimeById(Long id) {
return orikaBeanMapper.convertDTO(worktimeDao.findById(id).orElse(null), WorktimeDto.class);
}
@Override
public List<WorktimeDto> findWorktimesForGym(Long idGym) {
Gym gym = gymDao.findById(idGym).orElse(null);
List<Worktime> worktimes = gym.getWorktimes();
return orikaBeanMapper.convertListDTO(worktimes, WorktimeDto.class);
}
@Override
public List<SportsManDto> findSportsManForWorktime(Long idWorktime) {
Worktime worktime = worktimeDao.findById(idWorktime).orElse(null);
List<SportsMan> sportsMans = worktime.getSportsMans();
return orikaBeanMapper.convertListDTO(sportsMans, SportsManDto.class);
}
}
@RestController API
@RestController is a convenience annotation for creating Restful controllers. It is a specialization of @Component and is autodetected through classpath scanning. It adds the @Controller and @ResponseBody annotations. It converts the response to JSON or XML. It does not work with the view technology, so the methods cannot return ModelAndView. It is typically used in combination with annotated handler methods based on the @RequestMapping annotation.
We will create eigth classes in controller package:
-> ArbitrateController.java-> GymController.java
-> PaymentController.java
-> SportController.java
-> SportsManController.java
-> TrainController.java
-> UserController.java
-> WorktimeController.java
Here, we are creating a controller class
ArbitrateController.java We'll inject this bean into the ArbitrateManagerService bean using @Autowired on the field definition: We need to add map requests with request mapping annotations e.g. @RequestMapping, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping
src/main/java/com/gym/controller/ArbitrateController.java):
package com.gym.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.gym.dto.ArbitrateDto;
import com.gym.manager.ArbitrateManagerService;
@RestController
@RequestMapping("api")
@CrossOrigin(origins = "*")
public class ArbitrateController {
@Autowired
private ArbitrateManagerService arbitrateManagerService;
@PostMapping("/addArbitrateForGym/{idGym}")
ArbitrateDto addArbitrate(@RequestBody ArbitrateDto arbitrate, @PathVariable long idGym) {
return arbitrateManagerService.addArbitrateForGym(arbitrate, idGym);
}
@PostMapping("/addArbitrateForSport/{idArbitrate}/{idSport}")
void addArbitrateForSport(@PathVariable long idArbitrate, @PathVariable long idSport) {
arbitrateManagerService.addArbitrateForSport(idArbitrate, idSport);
}
@PutMapping("/editArbitrate/{id}")
ArbitrateDto editArbitrate(@RequestBody ArbitrateDto arbitrate, @PathVariable long id) {
return arbitrateManagerService.editArbitrate(arbitrate, id);
}
@DeleteMapping("/deleteArbitrate/{id}")
void deleteArbitrate(@PathVariable long id) {
arbitrateManagerService.deleteArbitrate(id);
}
@GetMapping("/findAllArbitrates")
List<ArbitrateDto> findAllArbitrates() {
return arbitrateManagerService.findAllArbitrates();
}
@GetMapping("/findArbitrateById/{id}")
ArbitrateDto findArbitrateById(@PathVariable long id) {
return arbitrateManagerService.findArbitrateById(id);
}
@GetMapping("/findArbitratesForSport/{idSport}")
List<ArbitrateDto> findArbitratesForSport(@PathVariable long idSport) {
return arbitrateManagerService.findArbitratesForSport(idSport);
}
@GetMapping("/findArbitratesForGym/{idGym}")
List<ArbitrateDto> findArbitratesForGym(@PathVariable long idGym) {
return arbitrateManagerService.findArbitratesForGym(idGym);
}
}
Here, we are creating a controller class
GymController.java We'll inject this bean into the GymManagerService bean using @Autowired on the field definition: We need to add map requests with request mapping annotations e.g. @RequestMapping, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping
src/main/java/com/gym/controller/GymController.java):
package com.gym.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.gym.dto.GymDto;
import com.gym.manager.GymManagerService;
@RestController
@RequestMapping("api")
@CrossOrigin(origins = "*")
public class GymController {
@Autowired
private GymManagerService gymManagerService;
@PostMapping("/addGym")
GymDto addGym(@RequestBody GymDto gym) {
return gymManagerService.addGym(gym);
}
@PutMapping("/editGym/{id}")
GymDto editGym(@RequestBody GymDto gym, @PathVariable Long id) {
return gymManagerService.editGym(gym, id);
}
@DeleteMapping("/deleteGym/{id}")
void deleteGym(@PathVariable Long id) {
gymManagerService.deleteGym(id);
}
@GetMapping("/findGymById/{id}")
GymDto findGymById(@PathVariable Long id) {
return gymManagerService.findGymById(id);
}
@GetMapping("/findAllGyms")
List<GymDto> findAllGyms() {
return gymManagerService.findAllGyms();
}
}
Here, we are creating a controller class
PaymentController.java We'll inject this bean into the PaymentManagerService bean using @Autowired on the field definition: We need to add map requests with request mapping annotations e.g. @RequestMapping, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping
src/main/java/com/gym/controller/PaymentController.java):
package com.gym.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.gym.dto.PaymentDto;
import com.gym.manager.PaymentManagerService;
@RestController
@RequestMapping("api")
@CrossOrigin(origins = "*")
public class PaymentController {
@Autowired
private PaymentManagerService paymentManagerService;
@PostMapping("/addPayment/{idSportsMan}")
PaymentDto addPayment(@RequestBody PaymentDto payment, @PathVariableLong idSportsMan) {
return paymentManagerService.addPayment(payment, idSportsMan);
}
@PutMapping("/editPayment/{id}")
PaymentDto editPayment(@RequestBody PaymentDto payment, @PathVariable Long id) {
return paymentManagerService.editPayment(payment, id);
}
@DeleteMapping("/deletePayment/{id}")
void deletePayment(@PathVariable Long id) {
paymentManagerService.deletePayment(id);
}
@GetMapping("/findPaymentById/{id}")
PaymentDto findPaymentById(@PathVariable Long id) {
return paymentManagerService.findPaymentById(id);
}
@GetMapping("/findPaymentForSportsMan/{idSportsMan}")
List<PaymentDto> findPaymentsForSportsMan(@PathVariable Long idSportsMan) {
return paymentManagerService.findPaymentsForSportsMan(idSportsMan);
}
}
Here, we are creating a controller class
SportController.java We'll inject this bean into the SportManagerService bean using @Autowired on the field definition: We need to add map requests with request mapping annotations e.g. @RequestMapping, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping
src/main/java/com/gym/controller/SportController.java):
package com.gym.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.gym.dto.SportDto;
import com.gym.manager.SportManagerService;
@RestController
@RequestMapping("api")
@CrossOrigin(origins = "*")
public class SportController {
@Autowired
private SportManagerService sportManagerService;
@PostMapping("/addSportForGym/{idGym}")
SportDto addSportForGym(@RequestBody SportDto sport, @PathVariable Long idGym) {
return sportManagerService.addSportForGym(sport, idGym);
}
@PostMapping("/addSportForSportsMan/{idSport}/{idSportsMan}")
void addSportForSportsMan(@PathVariable long idSport, @PathVariable long idSportsMan) {
sportManagerService.addSportForSportsMan(idSport, idSportsMan);
}
@PutMapping("/editSport/{id}")
SportDto editSport(@RequestBody SportDto sport, @PathVariable Long id) {
return sportManagerService.editSport(sport, id);
}
@DeleteMapping("/deleteSport/{id}")
void deleteSport(@PathVariable Long id) {
sportManagerService.deleteSport(id);
}
@GetMapping("/findSportById/{id}")
SportDto findSportById(@PathVariable Long id) {
return sportManagerService.findSportById(id);
}
@GetMapping("/findSportsForSportsMan/{idSportsMan}")
List<SportDto> findSportsForSportsMan(@PathVariable Long idSportsMan) {
return sportManagerService.findSportsForSportsMan(idSportsMan);
}
@GetMapping("/findSportsForGym/{idGym}")
List<SportDto> findSportsForGym(@PathVariable Long idGym) {
return sportManagerService.findSportsForGym(idGym);
}
}
Here, we are creating a controller class
SportsManController.java We'll inject this bean into the SportsManManagerService bean using @Autowired on the field definition: We need to add map requests with request mapping annotations e.g. @RequestMapping, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping
src/main/java/com/gym/controller/SportsManController.java):
package com.gym.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.gym.dto.SportsManDto;
import com.gym.manager.SportsManManagerService;
@RestController
@RequestMapping("api")
@CrossOrigin(origins = "*")
public class SportsManController {
@Autowired
private SportsManManagerService sportsManManagerService;
@PostMapping("/addSportsMan/{id}")
SportsManDto addSportsMan(@RequestBody SportsManDto sportsMan) {
return sportsManManagerService.addSportsMan(sportsMan);
}
@PutMapping("/editSportsMan/{id}")
SportsManDto editSportsMan(@RequestBody SportsManDto sportsMan, @PathVariable Long id) {
return sportsManManagerService.editSportsMan(sportsMan, id);
}
@DeleteMapping("/deleteSportsMan/{id}")
void deleteSportsMan(@PathVariable Long id) {
sportsManManagerService.deleteSportsMan(id);
}
@GetMapping("/findSportsManById/{id}")
SportsManDto findSportsManById(@PathVariable Long id) {
return sportsManManagerService.findSportsManById(id);
}
@GetMapping("/findAllSportsMans")
List<SportsManDto> findAllSportsMans() {
return sportsManManagerService.findAllSportsMans();
}
}
Here, we are creating a controller class
UserController.java We'll inject this bean into the ArbitrateManagerService bean using @Autowired on the field definition: We need to add map requests with request mapping annotations e.g. @RequestMapping, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping
src/main/java/com/gym/controller/UserController.java):
package com.gym.controller;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.gym.model.User;
import com.gym.service.UserService;
@RestController
@RequestMapping("api")
@CrossOrigin(origins = "*")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/addUser")
User addUser(@RequestBody User user) {
return userService.addUser(user);
}
@PutMapping("/editUser/{id}")
User editUser(@RequestBody User user, @PathVariable long id) {
return userService.editUser(user, id);
}
@GetMapping("/findUserById")
User findUserById(@PathVariable long id) {
return userService.findUserById(id);
}
@GetMapping("/findUserByUsername/{username}")
Optional<User> findUserByUsername(@PathVariable String username) {
return userService.findUserByUsername(username);
}
@DeleteMapping("/deleteUser/{id}")
void deleteUser(@PathVariable long id) {
userService.deleteUser(id);
}
}
Here, we are creating a controller class
WorktimeController.java We'll inject this bean into the WorktimeManangerService bean using @Autowired on the field definition: We need to add map requests with request mapping annotations e.g. @RequestMapping, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping
src/main/java/com/gym/controller/WorktimeController.java):
package com.gym.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.gym.dto.SportsManDto;
import com.gym.dto.WorktimeDto;
import com.gym.manager.WorktimeManangerService;
@RestController
@RequestMapping("api")
@CrossOrigin(origins = "*")
public class WorktimeController {
@Autowired
private WorktimeManangerService worktimeManangerService;
@PostMapping("/addSportsManForWork/{idSprtsMan}/{idWorktime}")
void addSportsManForWork(@PathVariable long idSprtsMan, @PathVariable long idWorktime) {
worktimeManangerService.addSportsManForWork(idSprtsMan, idWorktime);
}
@PostMapping("/addWorktimeForGym/{idGym}")
WorktimeDto addWorktimeForGym(@RequestBody WorktimeDto worktime, @PathVariable long idGym) {
return worktimeManangerService.addWorktimeForGym(worktime, idGym);
}
@PutMapping("/editWorktime/{id}/{idGym}")
WorktimeDto editWorktime(@RequestBody WorktimeDto worktime, @PathVariable Long id, @PathVariable long idGym) {
return worktimeManangerService.editWorktime(worktime, id, idGym);
}
@DeleteMapping("/deleteWorktime/{id}")
void deleteWorktime(@PathVariable Long id) {
worktimeManangerService.deleteWorktime(id);
}
@GetMapping("/findWorktimeById/{id}")
WorktimeDto findWorktimeById(@PathVariable Long id) {
return worktimeManangerService.findWorktimeById(id);
}
@GetMapping("/findWorktimesForGym/{idGym}")
List<WorktimeDto> findWorktimesForGym(@PathVariable Long idGym) {
return worktimeManangerService.findWorktimesForGym(idGym);
}
@GetMapping("/findSportsManForWorktime/{idWorktime}")
List<SportsManDto> findSportsManForWorktime(@PathVariable Long idWorktime) {
return worktimeManangerService.findSportsManForWorktime(idWorktime);
}
}
Here, we are creating an Entity
TrainController.java We'll inject this bean into the WorktimeManangerService bean using @Autowired on the field definition: We need to add map requests with request mapping annotations e.g. @RequestMapping, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping
src/main/java/com/gym/controller/TrainController.java):
package com.gym.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.gym.dto.TrainDto;
import com.gym.manager.TrainManagerService;
@RestController
@RequestMapping("api")
@CrossOrigin(origins = "*")
public class TrainController {
@Autowired
private TrainManagerService trainManagerService;
@PostMapping("/addTrainForGym/{idGym}")
TrainDto addTrainForGym(@RequestBody TrainDto train, @PathVariable long idGym) {
return trainManagerService.addTrainForGym(train, idGym);
}
@PostMapping("/addTrainForSport/{idTrain}/{idSport}")
void addTrainForSport(@PathVariable long idTrain, @PathVariable long idSport) {
trainManagerService.addTrainForSport(idTrain, idSport);
}
@PutMapping("/editTrain/{id}")
TrainDto editTrain(@RequestBody TrainDto train, @PathVariable long id) {
return trainManagerService.editTrain(train, id);
}
@DeleteMapping("/deleteTrain/{id}")
void deleteTrain(@PathVariable long id) {
trainManagerService.deleteTrain(id);
}
@GetMapping("/findTrainById/{id}")
TrainDto findTrainById(@PathVariable long id) {
return trainManagerService.findTrainById(id);
}
@GetMapping("/findAllTrains")
List<TrainDto> findAllTrains() {
return trainManagerService.findAllTrains();
}
@GetMapping("/findTrainsForSport/{idSport}")
List<TrainDto> findTrainsForSport(@PathVariable long idSport) {
return trainManagerService.findTrainsForSport(idSport);
}
@GetMapping("/findTrainsForGym/{idGym}")
List<TrainDto> findTrainsForGym(@PathVariable long idGym) {
return trainManagerService.findTrainsForGym(idGym);
}
}
GymApplication
@SpringBootApplication and its use in a simple Spring Boot application. We use the @SpringBootApplication annotation in our Application or Main class to enable a host of features, e.g. Java-based Spring configuration, component scanning, and in particular for enabling Spring
src/main/java/com/gym/GymApplication.java):
package com.gym;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@ComponentScan
@SpringBootApplication
public class GymApplication {
public static void main(String[] args) {
SpringApplication.run(GymApplication.class, args);
System.out.println("App started....");
}
}
Conclusion
Now we have an overview of Spring Boot CRUD example when building an App with clean architect. we have also added Service Components.
We also take a look at client-server architecture for REST API using Spring Web MVC & Spring Data JPA, as well, we are gooing to continue with Angular 10 project structure for building a front-end app to make HTTP requests and consume responses.