Getting Started | Building an Application with Spring Boot
Build an application enterprise with Spring boot and Angular use Jpa
In this part we will continue with Repositories and Services
When using Spring Data JPA to implement the persistence layer, the repository typically returns one or more instances of the root class. However, more often than not, we don't need all the properties of the returned objects.
In such cases, it may be desirable to retrieve data as objects of customized types. These types reflect partial views of the root class, containing only properties we care about. This is where projections come in handy.
We need to create these interface dao
-> ActivityDao.java
-> CoefficientDao.java
-> CourseDao.java
-> ExamDao.java
-> LevelDao.java
-> ManagerDao.java
-> NoteDao.java
-> ProgramDao.java
-> RoomDao.java
-> SchoolDao.java
-> SchoolingDao.java
-> SubjectDao.java
Here, we are creating an interface ActivityDao
src/main/java/com/school/dao/ActivityDao.java):
package com.school.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.school.modal.Activity;
@Repository
public interface ActivityDao extends JpaRepository<Activity, Long>{
}
Here, we are creating an interface CoefficientDao
src/main/java/com/school/dao/CoefficientDao.java):
package com.school.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.school.modal.Coefficient;
@Repository
public interface CoefficientDao extends JpaRepository<Coefficient, Long>{
}
Here, we are creating an interface CourseDao
src/main/java/com/school/dao/CourseDao.java):
package com.school.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.school.modal.Course;
@Repository
public interface CourseDao extends JpaRepository<Course, Long>{
}
Here, we are creating an interface ExamDao
src/main/java/com/school/dao/ExamDao.java):
package com.school.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.school.modal.Exam;
@Repository
public interface ExamDao extends JpaRepository<Exam, Long>{
}
Here, we are creating an interface LevelDao
src/main/java/com/school/dao/LevelDao.java):
package com.school.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.school.modal.Level;
@Repository
public interface LevelDao extends JpaRepository<Level, Long>{
}
Here, we are creating an interface ManagerDao
src/main/java/com/school/dao/ManagerDao.java):
package com.school.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.school.modal.Manager;
@Repository
public interface ManagerDao extends JpaRepository<Manager, Long>{
}
Here, we are creating an interface NoteDao
src/main/java/com/school/dao/NoteDao.java):
package com.school.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.school.modal.Note;
@Repository
public interface NoteDao extends JpaRepository<Note, Long>{
}
Here, we are creating an interface ProgramDao
src/main/java/com/school/dao/ProgramDao.java):
package com.school.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.school.modal.Program;
@Repository
public interface ProgramDao extends JpaRepository<Program, Long>{
}
Here, we are creating an interface RoomDao
src/main/java/com/school/dao/RoomDao.java):
package com.school.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.school.modal.Room;
@Repository
public interface RoomDao extends JpaRepository<Room, Long>{
}
Here, we are creating an interface SchoolDao
src/main/java/com/school/dao/SchoolDao.java):
package com.school.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.School;
import com.school.modal.Room;
@Repository
public interface SchoolDao extends JpaRepository<School, Long>{
}
Here, we are creating an interface SchoolingDao
src/main/java/com/school/dao/SchoolingDao.java):
package com.school.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.School;
import com.school.modal.Schooling;
@Repository
public interface SchoolingDao extends JpaRepository<Schooling, Long>{
}
Here, we are creating an interface SubjectDao
src/main/java/com/school/dao/SubjectDao.java):
package com.school.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.School;
import com.school.modal.Subject;
@Repository
public interface SubjectDao extends JpaRepository<Subject, Long>{
}
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 these interfaces in service package:
-> ActivityService.java
-> CoefficientService.java
-> CourseService.java
-> ExamService.java
-> LevelService.java
-> ManagerService.java
-> NoteService.java
-> ProgramService.java
-> RoomService.java
-> SchoolService.java
-> SchoolingService.java
-> SubjectService.java
Here, we are creating an interface ActivityService
src/main/java/com/school/service/ActivityService.java):
package com.school.service;
import java.util.List;
import org.springframework.stereotype.Service;
import com.school.modal.Activity;
@Service
public interface ActivityService {
Activity addActivity(Activity activity, long id);
Activity editActivity(Activity activity, long id);
Activity findActivity(long id);
void deleteActivity(long id);
List<Activity> findActivitiesForSchool(long id);
}
Here, we are creating an interface CoefficientService
src/main/java/com/school/service/CoefficientService.java):
package com.school.service;
import org.springframework.stereotype.Service;
import com.school.modal.Coefficient;
@Service
public interface CoefficientService {
Coefficient addCoefficient(Coefficient coefficient, long id);
Coefficient editCoefficient(Coefficient coefficient, long id);
Coefficient findCoefficient(long id);
void deleteCoefficient(long id);
}
Here, we are creating an interface CourseService
src/main/java/com/school/service/CourseService.java):
package com.school.service;
import org.springframework.stereotype.Service;
import com.school.modal.Course;
@Service
public interface CourseService {
Course addCourse(Course course, long idLevel, long idSubject);
Course editCourse(Course course, long idCourse, long idSubject);
Course findCourse(long id);
void deleteCourse(long idCourse, long idSubject);
}
Here, we are creating an interface ExamService
src/main/java/com/school/service/ExamService.java):
package com.school.service;
import java.util.List;
import org.springframework.stereotype.Service;
import com.school.modal.Exam;
@Service
public interface ExamService {
Exam addExam(Exam exam, long idSchool, long idSubject);
Exam editExam(Exam exam, long id);
Exam findExam(long id);
void deleteExam(long id, long idSubject);
List<Exam> findExamsForSchool(long id);
}
Here, we are creating an interface LevelService
src/main/java/com/school/service/LevelService.java):
package com.school.service;
import java.util.List;
import com.school.modal.Level;
public interface LevelService {
Level addLevel(Level level, long id);
Level editLevel(Level level, long id);
Level findLevel(long id);
Level findLevelForRoom(long id);
void deleteLevel(long id);
void addLevelToRoom(long idRoom, long idLevel);
List<Level> findLevels();
void deleteLevelFromRoom(long idRoom, long idLevel);
}
Here, we are creating an interface ManagerService
src/main/java/com/school/service/ManagerService.java):
package com.school.service;
import org.springframework.stereotype.Service;
import com.school.modal.Manager;
@Service
public interface ManagerService {
Manager addManager(Manager manager, long id);
Manager editManager(Manager manager, long id);
Manager findManager(long id);
Manager findManagerForSchool(long id);
void deleteManager(long id, long idSchhol);
}
Here, we are creating an interface NoteService
src/main/java/com/school/service/NoteService.java):
package com.school.service;
import org.springframework.stereotype.Service;
import com.school.modal.Note;
@Service
public interface NoteService {
Note addNote(Note note, long id);
Note editNote(Note note, long id);
Note findNote(long id);
void deleteNote(long id);
}
Here, we are creating an interface ProgramService
src/main/java/com/school/service/ProgramService.java):
package com.school.service;
import org.springframework.stereotype.Service;
import com.school.modal.Program;
@Service
public interface ProgramService {
Program addProgram(Program program, long id);
Program editProgram(Program program, long id);
Program findProgram(long id);
void deleteProgram(long id);
}
Here, we are creating an interface RoomService
src/main/java/com/school/service/RoomService.java):
package com.school.service;
import java.util.List;
import org.springframework.stereotype.Service;
import com.school.modal.Room;
@Service
public interface RoomService {
Room addRoom(Room room, long id);
Room editRoom(Room room, long id);
Room findRoom(long id);
void deleteRoom(long id);
List<Room> findRoomsForSchool(long id);
}
Here, we are creating an interface SchoolService
src/main/java/com/school/service/SchoolService.java):
package com.school.service;
import java.util.List;
import org.springframework.stereotype.Service;
import com.school.modal.School;
@Service
public interface SchoolService {
School addSchool(School school);
School editSchool(School school, long id);
School findSchool(long id);
void deleteSchool(long id);
List<School> findSchools();
}
Here, we are creating an interface SchoolingService
src/main/java/com/school/service/SchoolingService.java):
package com.school.service;
import java.util.List;
import org.springframework.stereotype.Service;
import com.school.modal.Schooling;
@Service
public interface SchoolingService {
Schooling addSchooling(Schooling schooling, long id);
Schooling editSchooling(Schooling schooling, long id);
Schooling findSchooling(long id);
void deleteSchooling(long id);
List<Schooling> findSchoolingsForSchool(long id);
}
Here, we are creating an interface SubjectService
src/main/java/com/school/service/SubjectService.java):
package com.school.service;
import java.util.List;
import org.springframework.stereotype.Service;
import com.school.modal.Subject;
@Service
public interface SubjectService {
Subject addSubject(Subject subject, long idSchool);
Subject editSubject(Subject subject, long id);
Subject findSubject(long id);
Subject findSubjectForExam(long id);
Subject findSubjectForCourse(long id);
void deleteSubject(long id);
List<Subject> findAllSubjectsForSchool(long id);
List<Subject> findSubjectsForSchool(long id);
}
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 these class in the impl package
-> ActivityServiceImpl.java
-> CoefficientServiceImpl.java
-> CourseServiceImpl.java
-> ExamServiceImpl.java
-> LevelServiceImpl.java
-> ManagerServiceImpl.java
-> NoteServiceImpl.java
-> ProgramServiceImpl.java
-> RoomServiceImpl.java
-> SchoolServiceImpl.java
-> SchoolingServiceImpl.java
-> SubjectServiceImpl.java
Here, we are creating a class ActivityServiceImpl
src/main/java/com/school/impl/ActivityServiceImpl.java):
package com.school.impl;
import java.util.Date;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.school.dao.ActivityDao;
import com.school.dao.SchoolDao;
import com.school.modal.Activity;
import com.school.modal.School;
import com.school.service.ActivityService;
@Component
@Transactional
public class ActivityServiceImpl implements ActivityService {
@Autowired
private ActivityDao activityDao;
@Autowired
private SchoolDao schoolDao;
@Override
public Activity addActivity(Activity activity, long id) {
School school = schoolDao.findById(id).get();
school.addActivity(activity);
activity.setCreatedAt(new Date());
return activityDao.save(activity);
}
@Override
public Activity editActivity(Activity activity, long id) {
Activity existActivity = activityDao.findById(id).get();
existActivity.setType(activity.getType());
existActivity.setDay(activity.getDay());
existActivity.setStartDate(activity.getStartDate());
existActivity.setEndDate(activity.getEndDate());
existActivity.setDescription(activity.getDescription());
existActivity.setDate(activity.getDate());
return activityDao.save(existActivity);
}
@Override
public Activity findActivity( long id) {
return activityDao.findById(id).get();
}
@Override
public void deleteActivity( long id) {
activityDao.deleteById(id);
}
@Override
public List<Activity> findActivitiesForSchool( long id) {
School school = activityDao.findById(id).get();
return school.getActivities();
}
}
Here, we are creating a class CoefficientServiceImpl
src/main/java/com/school/impl/CoefficientServiceImpl.java):
package com.school.impl;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.school.dao.CoefficientDao;
import com.school.dao.ProgramDao;
import com.school.modal.Coefficient;
import com.school.modal.Program;
import com.school.service.CoefficientService;
@Component
@Transactional
public class CoefficientServiceImpl implements CoefficientService {
@Autowired
private CoefficientDao coefficientDao;
@Autowired
private ProgramDao programDao;
@Override
public Coefficient addCoefficient(Coefficient coefficient, long id) {
Program program = programDao.findById(id).get();
coefficient.setCreatedAt(new Date());
program.addCoefficient(coefficient);
return coefficientDao.save(coefficient);
}
@Override
public Coefficient editCoefficient(Coefficient coefficient, long id) {
Coefficient existCoefficient = coefficientDao.findById(id).get();
existCoefficient.setGrade(coefficient.getGrade());
existCoefficient.setDescription(coefficient.getDescription());
return coefficientDao.save(existCoefficient);
}
@Override
public Coefficient findCoefficient(long id) {
return coefficientDao.findById(id).get();
}
@Override
public void deleteCoefficient(long id) {
coefficientDao.deleteById(id);
}
}
Here, we are creating a class CourseServiceImpl
src/main/java/com/school/impl/CourseServiceImpl.java):
package com.school.impl;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.school.dao.CourseDao;
import com.school.dao.LevelDao;
import com.school.dao.SubjectDao;
import com.school.modal.Course;
import com.school.modal.Level;
import com.school.modal.Subject;
import com.school.service.CourseService;
@Component
@Transactional
public class CourseServiceImpl implements CourseService {
@Autowired
private CourseDao courseDao;
@Autowired
private LevelDao levelDao;
@Autowired
private SubjectDao subjectDao;
@Override
public Course addCourse(Course course, long idLevel, long idSubject) {
Level level = levelDao.findById(idLevel).get();
Subject subject = subjectDao.findById(idSubject).get();
course.setCreatedAt(new Date());
level.addCourse(course);
course.setSubject(subject);
subject.setCourse(course);
return courseDao.save(course);
}
@Override
public Course editCourse(Course course, long idCourse, long idSubject) {
Subject subject = subjectDao.findById(idSubject).get();
Course existsCourse = courseDao.findById(idCourse).get();
existsCourse.setDate(course.getDate());
existsCourse.setStartDate(course.getStartDate());
existsCourse.setEndDate(course.getEndDate());
existsCourse.setDescription(course.getDescription());
subject.setCourse(existsCourse);
existsCourse.setSubject(subject);
return courseDao.save(existsCourse);
}
@Override
public Course findCourse(long id) {
return courseDao.findById(id).get();
}
@Override
public void deleteCourse(long idCourse, long idSubject) {
Subject subject = subjectDao.findById(idSubject).get();
Course existsCourse = courseDao.findById(idCourse).get();
subject.setCourse(null);
existsCourse.setSubject(null);
courseDao.delete(existsCourse);
}
}
Here, we are creating a class ExamServiceImpl
src/main/java/com/school/impl/ExamServiceImpl.java):
package com.school.impl;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.school.dao.ExamDao;
import com.school.dao.SubjectDao;
import com.school.dao.SchoolDao;
import com.school.modal.Exam;
import com.school.modal.Subject;
import com.school.modal.School;
import com.school.service.ExamService;
@Component
@Transactional
public class ExamServiceImpl implements ExamService {
@Autowired
private ExamDao examDao;
@Autowired
private SchoolDao schoolDao;
@Autowired
private SubjectDao subjectDao;
@Override
public Exam addExam(Exam exam, long idSchool, long idSubject) {
School school = schoolDao.findById(idSchool).get();
Subject subject = subjectDao.findById(idSubject).get();
exam.setCreatedAt(new Date());
school.addExam(exam);
exam.setSubject(subject);
subject.setExam(exam);
return examDao.save(exam);
}
@Override
public Exam editExam(Exam exam, long id) {
Exam existExam = examDao.findById(id).get();
existExam.setDate(exam.getDate());
existExam.setDescription(exam.getDescription());
existExam.setStart(exam.getStart());
existExam.setEnd(exam.getEnd());
return examDao.save(existExam);
}
@Override
public Exam findExam(long id) {
return examDao.findById(id).get();
}
@Override
public void deleteExam(long id, long idSubject) {
Exam existExam = examDao.findById(id).get();
Subject subject = subjectDao.findById(idSubject).get();
existExam.setSubject(null);
subject.setExam(null);
examDao.delete(existExam);
}
@Override
public List<Exam> findExamsForSchool(long id) {
School school = schoolDao.findById(id).get();
return school.getExams();
}
}
Here, we are creating a class LevelServiceImpl
src/main/java/com/school/impl/LevelServiceImpl.java):
package com.school.impl;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.school.dao.LevelDao;
import com.school.dao.RoomDao;
import com.school.dao.SchoolingDao;
import com.school.modal.Level;
import com.school.modal.Room;
import com.school.modal.Schooling;
import com.school.service.LevelService;
@Component
@Transactional
public class LevelServiceImpl implements LevelService {
@Autowired
private LevelDao levelDao;
@Autowired
private SchoolingDao schoolingDao;
@Autowired
private RoomDao roomDao;
@Override
public Level addLevel(Level level, longid) {
Schooling schooling = schoolingDao.findById(id).get();
level.setCreatedAt(new Date());
schooling.addLevel(level);
return levelDao.save(level);
}
@Override
public Level editLevel(Level level, longid) {
Level existLevel = levelDao.findById(id).get();
existLevel.setLabel(level.getLabel());
existLevel.setDescription(level.getDescription());
return levelDao.save(existLevel);
}
@Override
public Level findLevel(longid) {
return levelDao.findById(id).get();
}
@Override
public void deleteLevel(longid) {
levelDao.deleteById(id);
}
@Override
public void addLevelToRoom(longidRoom, longidLevel) {
Level existLevel = levelDao.findById(idLevel).get();
Room room = roomDao.findById(idRoom).get();
existLevel.setRoom(room);
room.setLevel(existLevel);
}
@Override
public List<Level> findLevels() {
return levelDao.findAll();
}
@Override
public void deleteLevelFromRoom(longidRoom, longidLevel) {
Level existLevel = levelDao.findById(idLevel).get();
Room room = roomDao.findById(idRoom).get();
existLevel.setRoom(null);
room.setLevel(null);
}
@Override
public Level findLevelForRoom(longidRoom) {
Room room = roomDao.findById(idRoom).get();
return room.getLevel();
}
}
Here, we are creating a class ManagerServiceImpl
src/main/java/com/school/impl/ManagerServiceImpl.java):
package com.school.impl;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.school.dao.ManagerDao;
import com.school.dao.SchoolDao;
import com.school.modal.Manager;
import com.school.modal.School;
import com.school.service.ManagerService;
@Component
@Transactional
public class ManagerServiceImpl implements ManagerService {
@Autowired
private ManagerDao managerDao;
@Autowired
private SchoolDao schoolDao;
@Override
public Manager addManager(Manager manager, longid) {
School school = schoolDao.findById(id).get();
manager.setSchool(school);
school.setManager(manager);
return managerDao.save(manager);
}
@Override
public Manager editManager(Manager manager, longid) {
Manager existManager = managerDao.findById(id).get();
existManager.setFirstName(manager.getFirstName());
existManager.setLastName(manager.getLastName());
return managerDao.save(existManager);
}
@Override
public Manager findManager(longid) {
return managerDao.findById(id).get();
}
@Override
public void deleteManager(longid, longidSchool) {
School school = schoolDao.findById(idSchhol).get();
school.setManager(null);
managerDao.deleteById(id);
}
@Override
public Manager findManagerForSchool(longid) {
School school = schoolDao.findById(id).get();
return school.getManager();
}
}
Here, we are creating a class NoteServiceImpl
src/main/java/com/school/impl/NoteServiceImpl.java):
package com.school.impl;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.school.dao.ExamDao;
import com.school.dao.NoteDao;
import com.school.modal.Exam;
import com.school.modal.Note;
import com.school.service.NoteService;
@Component
@Transactional
public class NoteServiceImpl implements NoteService {
@Autowired
private NoteDao noteDao;
@Autowired
private ExamDao examDao;
@Override
public Note addNote(Note note, longid) {
Exam exam = examDao.findById(id).get();
note.setCreatedAt(new Date());
exam.addNote(note);
return noteDao.save(note);
}
@Override
public Note editNote(Note note, longid) {
Note existNote = noteDao.findById(id).get();
existNote.setScore(note.getScore());
existNote.setDescription(note.getDescription());
return noteDao.save(existNote);
}
@Override
public Note findNote(longid) {
return noteDao.findById(id).get();
}
@Override
public void deleteNote(longid) {
noteDao.deleteById(id);
}
}
Here, we are creating a class ProgramServiceImpl
src/main/java/com/school/impl/ProgramServiceImpl.java):
package com.school.impl;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.school.dao.SubjectDao;
import com.school.dao.ProgramDao;
import com.school.modal.Subject;
import com.school.modal.Program;
import com.school.service.ProgramService;
@Component
@Transactional
public class ProgramServiceImpl implements ProgramService {
@Autowired
private ProgramDao programDao;
@Autowired
private SubjectDao matterDao;
@Override
public Program addProgram(Program program, longid) {
Subject matter = matterDao.findById(id).get();
program.setCreatedAt(new Date());
matter.addProgram(program);
return programDao.save(program);
}
@Override
public Program editProgram(Program program, longid) {
Program existProgram = programDao.findById(id).get();
existProgram.setName(program.getName());
existProgram.setDescription(program.getDescription());
return programDao.save(existProgram);
}
@Override
public Program findProgram(longid) {
return programDao.findById(id).get();
}
@Override
public void deleteProgram(longid) {
programDao.deleteById(id);
}
}
Here, we are creating a class RoomServiceImpl
src/main/java/com/school/impl/RoomServiceImpl.java):
package com.school.impl;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.school.dao.LevelDao;
import com.school.dao.RoomDao;
import com.school.dao.SchoolDao;
import com.school.modal.Level;
import com.school.modal.Room;
import com.school.modal.School;
import com.school.service.RoomService;
@Component
@Transactional
public class RoomServiceImpl implements RoomService {
@Autowired
private RoomDao roomDao;
@Autowired
private SchoolDao schoolDao;
@Override
public Room addRoom(Room room, longid) {
School school = schoolDao.findById(id).get();
room.setCreatedAt(new Date());
school.addRoom(room);
return roomDao.save(room);
}
@Override
public Room editRoom(Room room, longid) {
Room existRoom = roomDao.findById(id).get();
existRoom.setCode(room.getCode());
existRoom.setCapacity(room.getCapacity());
existRoom.setDescription(room.getDescription());
return roomDao.save(existRoom);
}
@Override
public Room findRoom(longid) {
return roomDao.findById(id).get();
}
@Override
public void deleteRoom(longid) {
roomDao.deleteById(id);
}
@Override
public List<Room> findRoomsForSchool(longid) {
School school = schoolDao.findById(id).get();
return school.getRooms();
}
}
Here, we are creating a class SchoolServiceImpl
src/main/java/com/school/impl/SchoolServiceImpl.java):
package com.school.impl;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.school.dao.SchoolDao;
import com.school.modal.School;
import com.school.service.SchoolService;
@Component
@Transactional
public class SchoolServiceImpl implements SchoolService {
@Autowired
private SchoolDao schoolDao;
@Override
public School addSchool(School school) {
school.setCreatedAt(new Date());
return schoolDao.save(school);
}
@Override
public School editSchool(School school, longid) {
School existSchool = schoolDao.findById(id).get();
existSchool.setName(school.getName());
existSchool.setCity(school.getCity());
existSchool.setDescription(school.getDescription());
existSchool.setOpen(school.getOpen());
existSchool.setClose(school.getClose());
return schoolDao.save(existSchool);
}
@Override
public School findSchool(longid) {
return schoolDao.findById(id).get();
}
@Override
public void deleteSchool(longid) {
schoolDao.deleteById(id);
}
@Override
public List<School> findSchools() {
return schoolDao.findAll();
}
}
Here, we are creating a class SchoolingServiceImpl
src/main/java/com/school/impl/SchoolingServiceImpl.java):
package com.school.impl;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.school.dao.SchoolDao;
import com.school.dao.SchoolingDao;
import com.school.modal.School;
import com.school.modal.Schooling;
import com.school.service.SchoolingService;
@Component
@Transactional
public class SchoolingServiceImpl implements SchoolingService {
@Autowired
private SchoolingDao schoolingDao;
@Autowired
private SchoolDao schoolDao;
@Override
public Schooling addSchooling(Schooling schooling, longid) {
School school = schoolDao.findById(id).get();
school.addSchooling(schooling);
schooling.setCreatedAt(new Date());
return schoolingDao.save(schooling);
}
@Override
public Schooling editSchooling(Schooling schooling, longid) {
Schooling existSchooling = schoolingDao.findById(id).get();
existSchooling.setYear(schooling.getYear());
existSchooling.setDescription(schooling.getDescription());
return schoolingDao.save(existSchooling);
}
@Override
public Schooling findSchooling(longid) {
return schoolingDao.findById(id).get();
}
@Override
public void deleteSchooling(longid) {
schoolingDao.deleteById(id);
}
@Override
public List<Schooling> findSchoolingsForSchool(longid) {
School school = schoolDao.findById(id).get();
return school.getSchoolings();
}
}
Here, we are creating a class SubjectServiceImpl
src/main/java/com/school/impl/SubjectServiceImpl.java):
package com.school.impl;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.school.dao.SubjectDao;
import com.school.dao.CourseDao;
import com.school.dao.ExamDao;
import com.school.dao.SchoolDao;
import com.school.modal.Subject;
import com.school.modal.Course;
import com.school.modal.Exam;
import com.school.modal.School;
import com.school.service.SubjectService;
@Component
@Transactional
public class SubjectServiceImpl implements SubjectService {
@Autowired
private SubjectDao subjectDao;
@Autowired
private SchoolDao schoolDao;
@Autowired
private ExamDao examDao;
@Autowired
private CourseDao courseDao;
@Override
public Subject addSubject(Subject subject, longidSchool) {
School school = schoolDao.findById(idSchool).get();
subject.setCreatedAt(new Date());
school.addSubject(subject);
return subjectDao.save(subject);
}
@Override
public Subject editSubject(Subject subject, longid) {
Subject existSubject = subjectDao.findById(id).get();
existSubject.setName(subject.getName());
existSubject.setColor(subject.getColor());
existSubject.setDescription(subject.getDescription());
return subjectDao.save(existSubject);
}
@Override
public Subject findSubject(longid) {
return subjectDao.findById(id).get();
}
@Override
public void deleteSubject(longid) {
subjectDao.deleteById(id);
}
@Override
public List<Subject> findAllSubjectsForSchool(longid) {
School school = schoolDao.findById(id).get();
return school.getSubjects();
}
@Override
public Subject findSubjectForExam(longid) {
Exam exam = examDao.findById(id).get();
return exam.getSubject();
}
@Override
public Subject findSubjectForCourse(longid) {
Course course = courseDao.findById(id).get();
return course.getSubject();
}
@Override
public List<Subject> findSubjectsForSchool(longid) {
School school = schoolDao.findById(id).get();
return school.getSubjects();
}
}
@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 these class in controller package:
-> ActivityController.java
-> CoefficientController.java
-> CourseController.java
-> ExamController.java
-> LevelController.java
-> ManagerConntroller.java
-> NoteController.java
-> ProgramController.java
-> RoomController.java
-> SchoolController.java
-> SchoolingController.java
-> SubjectController.java
Here, we are creating a class ActivityController
src/main/java/com/school/controller/ActivityController.java):
package com.school.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.school.modal.Activity;
import com.school.service.ActivityService;
@RestController
@RequestMapping(value = "/api")
@CrossOrigin(origins = "*")
public class ActivityController {
@Autowired
private ActivityService activityService;
@PostMapping("/addActivity/{id}")
Activity addActivity(@RequestBody Activity activity, @PathVariable long id) {
return activityService.addActivity(activity, id);
}
@PutMapping("/editActivity/{id}")
Activity editActivity(@RequestBody Activity activity, @PathVariable long id) {
return activityService.editActivity(activity, id);
}
@GetMapping("/findActivity/{id}")
Activity findActivity(@PathVariable long id) {
return activityService.findActivity(id);
}
@DeleteMapping("/deleteActivity/{id}")
void deleteActivity(@PathVariable long id) {
activityService.deleteActivity(id);
}
@GetMapping("/findActivitiesForSchool/{id}")
Listélt;Activity> findActivitiesForSchool(@PathVariable long id) {
return activityService.findActivitiesForSchool(id);
}
}
Here, we are creating a class CoefficientController
src/main/java/com/school/controller/CoefficientController.java):
package com.school.controller;
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.school.modal.Coefficient;
import com.school.service.CoefficientService;
@RestController
@RequestMapping(value = "/api")
@CrossOrigin(origins = "*")
public class CoefficientController {
@Autowired
private CoefficientService coefficientService;
@PostMapping("/addCoefficient/{id}")
Coefficient addCoefficient(@RequestBody Coefficient coefficient, @PathVariable long id) {
return coefficientService.addCoefficient(coefficient, id);
}
@PutMapping("/editCoefficient/{id}")
Coefficient editCoefficient(@RequestBody Coefficient coefficient, @PathVariable long id) {
return coefficientService.editCoefficient(coefficient, id);
}
@GetMapping("/findCoefficient/{id}")
Coefficient findCoefficient(@PathVariable long id) {
return coefficientService.findCoefficient(id);
}
@DeleteMapping("/deleteCoefficient/{id}")
void deleteCoefficient(@PathVariable long id) {
coefficientService.deleteCoefficient(id);
}
}
Here, we are creating a class CourseController
src/main/java/com/school/controller/CourseController.java):
package com.school.controller;
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.school.modal.Course;
import com.school.service.CourseService;
@RestController
@RequestMapping(value = "/api")
@CrossOrigin(origins = "*")
public class CourseController {
@Autowired
private CourseService courseService;
@PostMapping("/addCourse/{idLevel}/{idSubject}")
Course addCourse(@RequestBody Course course, @PathVariable long idLevel, @PathVariable long idSubject) {
return courseService.addCourse(course, idLevel, idSubject);
}
@PutMapping("/editCourse/{idCourse}/{idSubject}")
Course editCourse(@RequestBody Course course, @PathVariable long idCourse, @PathVariable long idSubject) {
return courseService.editCourse(course, idCourse, idSubject);
}
@GetMapping("/findCourse/{id}")
Course findCourse(@PathVariable long id) {
return courseService.findCourse(id);
}
@DeleteMapping("/deleteCourse/{idCourse}/{idSubject}")
void deleteCourse(@PathVariable long idCourse, @PathVariable long idSubject) {
courseService.deleteCourse(idCourse, idSubject);
}
}
Here, we are creating a class ExamController
src/main/java/com/school/controller/ExamController.java):
package com.school.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.school.modal.Exam;
import com.school.service.ExamService;
@RestController
@RequestMapping(value = "/api")
@CrossOrigin(origins = "*")
public class ExamController {
@Autowired
private ExamService examService;
@PostMapping("/addExam/{idSchool}/{idSubject}")
Exam addExam(@RequestBody Exam exam, @PathVariable long idSchool, @PathVariable long idSubject) {
return examService.addExam(exam, idSchool, idSubject);
}
@PutMapping("/editExam/{id}")
Exam editExam(@RequestBody Exam exam, @PathVariable long id) {
return examService.editExam(exam, id);
}
@GetMapping("/findExam/{id}")
Exam findExam(@PathVariable long id) {
return examService.findExam(id);
}
@DeleteMapping("/deleteExam/{id}/{idSubject}")
void deleteExam(@PathVariable long id, @PathVariable long idSubject) {
examService.deleteExam(id, idSubject);
}
@GetMapping("/findExamsForSchool/{id}")
List<Exam> findExamsForSchool(@PathVariable long id) {
return examService.findExamsForSchool(id);
}
}
Here, we are creating a class LevelController
src/main/java/com/school/controller/LevelController.java):
package com.school.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.school.modal.Level;
import com.school.service.LevelService;
@RestController
@RequestMapping(value = "/api")
@CrossOrigin(origins = "*")
public class LevelController {
@Autowired
private LevelService levelService;
@PostMapping("/addLevel/{id}")
Level addLevel(@RequestBody Level level, @PathVariable long id) {
return levelService.addLevel(level, id);
}
@PutMapping("/editLevel/{id}")
Level editLevel(@RequestBody Level level, @PathVariable long id) {
return levelService.editLevel(level, id);
}
@GetMapping("/findLevel/{id}")
Level findLevel(@PathVariable long id) {
return levelService.findLevel(id);
}
@DeleteMapping("/deleteLevel/{id}")
void deleteLevel(@PathVariable long id) {
levelService.deleteLevel(id);
}
@PostMapping("/addLevelToRoom/{idRoom}/{idLevel}")
void addLevelToRoom(@PathVariable long idRoom, @PathVariable long idLevel) {
levelService.addLevelToRoom(idRoom, idLevel);
}
@GetMapping("/findLevels")
List<Level> findLevels() {
return levelService.findLevels();
}
@DeleteMapping("/deleteLevelFromRoom/{idRoom}/{idLevel}")
void deleteLevelFromRoom(@PathVariable long idRoom, @PathVariable long idLevel) {
levelService.deleteLevelFromRoom(idRoom, idLevel);
}
@GetMapping("/findLevelForRoom/{idRoom}")
Level findLevelForRoom(@PathVariable long idRoom) {
return levelService.findLevelForRoom(idRoom);
}
}
Here, we are creating a class ManagerConntroller
src/main/java/com/school/controller/ManagerConntroller.java):
package com.school.controller;
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.school.modal.Manager;
import com.school.service.ManagerService;
@RestController
@RequestMapping(value = "/api")
@CrossOrigin(origins = "*")
public class ManagerConntroller {
@Autowired
private ManagerService managerService;
@PostMapping("/addManager/{id}")
Manager addManager(@RequestBody Manager manager, @PathVariable long id) {
return managerService.addManager(manager, id);
}
@PutMapping("/editManager/{id}")
Manager editManager(@RequestBody Manager manager, @PathVariable long id) {
return managerService.editManager(manager, id);
}
@GetMapping("/findManager/{id}")
Manager findManager(@PathVariable long id) {
return managerService.findManager(id);
}
@GetMapping("/findManagerForSchool/{id}")
Manager findManagerForSchool(@PathVariable long id) {
return managerService.findManagerForSchool(id);
}
@DeleteMapping("/deleteManager/{id}/{idSchhol}")
void deleteManager(@PathVariable long id, @PathVariable long idSchool) {
managerService.deleteManager(id, idSchhol);
}
}
Here, we are creating a class NoteController
src/main/java/com/school/controller/NoteController.java):
package com.school.controller;
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.school.modal.Note;
import com.school.service.NoteService;
@RestController
@RequestMapping(value = "/api")
@CrossOrigin(origins = "*")
public class NoteController {
@Autowired
private NoteService noteService;
@PostMapping("/addNote/{id}")
Note addNote(@RequestBody Note note, @PathVariable long id) {
return noteService.addNote(note, id);
}
@PutMapping("/editNote/{id}")
Note editNote(@RequestBody Note note, @PathVariable long id) {
return noteService.editNote(note, id);
}
@GetMapping("/findNote/{id}")
Note findNote(@PathVariable long id) {
return noteService.findNote(id);
}
@DeleteMapping("/deleteNote/{id}")
void deleteNote(@PathVariable long id) {
noteService.deleteNote(id);
}
}
Here, we are creating a class ProgramController
src/main/java/com/school/controller/ProgramController.java):
package com.school.controller;
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.school.modal.Program;
import com.school.service.ProgramService;
@RestController
@RequestMapping(value = "/api")
@CrossOrigin(origins = "*")
public class ProgramController {
@Autowired
private ProgramService programService;
@PostMapping("/addProgram/{id}")
Program addProgram(@RequestBody Program program, @PathVariable long id) {
return programService.addProgram(program, id);
}
@PutMapping("/editProgram/{id}")
Program editProgram(@RequestBody Program program, @PathVariable long id) {
return programService.editProgram(program, id);
}
@GetMapping("/findProgram/{id}")
Program findProgram(@PathVariable long id) {
return programService.findProgram(id);
}
@DeleteMapping("/deleteProgram/{id}")
void deleteProgram(@PathVariable long id) {
programService.deleteProgram(id);
}
}
Here, we are creating a class RoomController
src/main/java/com/school/controller/RoomController.java):
package com.school.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.school.modal.Room;
import com.school.service.RoomService;
@RestController
@RequestMapping(value = "/api")
@CrossOrigin(origins = "*")
public class RoomController {
@Autowired
private RoomService roomService;
@PostMapping("/addRoom/{id}")
Room addRoom(@RequestBody Room room, @PathVariable long id) {
return roomService.addRoom(room, id);
}
@PutMapping("/editRoom/{id}")
Room editRoom(@RequestBody Room room, @PathVariable long id) {
return roomService.editRoom(room, id);
}
@GetMapping("/findRoom/{id}")
Room findRoom(@PathVariable long id) {
return roomService.findRoom(id);
}
@DeleteMapping("/deleteRoom/{id}")
void deleteRoom(@PathVariable long id) {
roomService.deleteRoom(id);
}
@GetMapping("/findRoomsForSchool/{id}")
List<Room> findRoomsForSchool(@PathVariable long id) {
return roomService.findRoomsForSchool(id);
}
}
Here, we are creating a class SchoolController
src/main/java/com/school/controller/SchoolController.java):
package com.school.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.school.modal.School;
import com.school.service.SchoolService;
@RestController
@RequestMapping(value = "/api")
@CrossOrigin(origins = "*")
public class SchoolController {
@Autowired
private SchoolService schoolService;
@PostMapping("/addSchool")
School addSchool(@RequestBody School school) {
return schoolService.addSchool(school);
}
@PutMapping("/editSchool/{id}")
School editSchool(@RequestBody School school, @PathVariable long id) {
return schoolService.editSchool(school, id);
}
@GetMapping("/findSchool/{id}")
School findSchool(@PathVariable long id) {
return schoolService.findSchool(id);
}
@DeleteMapping("/deleteSchool/{id}")
void deleteSchool(@PathVariable long id) {
schoolService.deleteSchool(id);
}
@GetMapping("/findSchools")
List<School> findSchools() {
return schoolService.findSchools();
}
}
Here, we are creating a class SchoolingController
src/main/java/com/school/controller/SchoolingController.java):
package com.school.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.school.modal.Schooling;
import com.school.service.SchoolingService;
@RestController
@RequestMapping(value = "/api")
@CrossOrigin(origins = "*")
public class SchoolingController {
@Autowired
private SchoolingService schoolingService;
@PostMapping("/addSchooling/{id}")
Schooling addSchooling(@RequestBody Schooling schooling, @PathVariable long id) {
return schoolingService.addSchooling(schooling, id);
}
@PutMapping("/editSchooling/{id}")
Schooling editSchooling(@RequestBody Schooling schooling, @PathVariable long id) {
return schoolingService.editSchooling(schooling, id);
}
@GetMapping("/findSchooling/{id}")
Schooling findSchooling(@PathVariable long id) {
return schoolingService.findSchooling(id);
}
@DeleteMapping("/deleteSchooling/{id}")
void deleteSchooling(@PathVariable long id) {
schoolingService.deleteSchooling(id);
}
@GetMapping("/findSchoolingsForSchool/{id}")
List<Schooling> findSchoolingsForSchool(@PathVariable long id) {
return schoolingService.findSchoolingsForSchool(id);
}
}
Here, we are creating a class SubjectController
src/main/java/com/school/controller/SubjectController.java):
package com.school.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.school.modal.Subject;
import com.school.service.SubjectService;
@RestController
@RequestMapping(value = "/api")
@CrossOrigin(origins = "*")
public class SubjectController {
@Autowired
private SubjectService subjectService;
@PostMapping("/addSubject/{id}")
Subject addSubject(@RequestBody Subject subject, @PathVariable long id) {
return subjectService.addSubject(subject, id);
}
@PutMapping("/editSubject/{id}")
Subject editSubject(@RequestBody Subject subject, @PathVariable long id) {
return subjectService.editSubject(subject, id);
}
@GetMapping("/findSubject/{id}")
Subject findSubject(@PathVariable long id) {
return subjectService.findSubject(id);
}
@GetMapping("/findSubjectForExam/{id}")
Subject findSubjectForExam(@PathVariable long id) {
return subjectService.findSubjectForExam(id);
}
@DeleteMapping("/deleteSubject/{id}")
void deleteSubject(@PathVariable long id) {
subjectService.deleteSubject(id);
}
@GetMapping("/findAllSubjectsForSchool/{id}")
List<Subject> findAllSubjectsForSchool(@PathVariable long id) {
return subjectService.findAllSubjectsForSchool(id);
}
@GetMapping("/findSubjectForCourse/{id}")
Subject findSubjectForCourse(@PathVariable long id) {
return subjectService.findSubjectForCourse(id);
}
@GetMapping("/findSubjectsForSchool/{id}")
List<Subject> findSubjectsForSchool(@PathVariable long id) {
return subjectService.findSubjectsForSchool(id);
}
}
SchoolApplication
@BookStoreApplication 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/school/SchoolApplication.java):
package com.shcool;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SchoolApplication {
public static void main(String[] args) {
SpringApplication.run(SchoolApplication.class, args);
System.out.println("App started....");
}
}
Conclusion
Now we have an overview of Spring Boot example when building a @RestController API.
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 project structure for building a front-end app to make HTTP requests and consume responses.