For devlopment I am using Intellij IDE. I found “File and Code Templates” and “Live Templates” very useful, It is beneficial while doing day-to-day development. It saves some time and be more productive.
github link: https://github.com/purab/IntelliJ-IDEA-File-Templates
Mostly we work on Rest APIs. So I created the following File Templates
- Spring Controller
- Spring Entity
- Spring Repository
- Spring Service
- Spring Static Service
Go to file-> setting and search for “File Templates”.

Spring Controller
- On Files tab click on + (Create Template)
- Enter Name as : “SpringController”, and leave Extension as java
- In the Content text box add the following content
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#set( $CamelCaseName = "$NAME.substring(0,1).toLowerCase()$NAME.substring(1)" )
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import org.springframework.web.bind.annotation.*;
@CrossOrigin
@RestController
@RequestMapping("/api")
@RequiredArgsConstructor
@Slf4j
public class ${NAME}Controller {
@GetMapping("/${CamelCaseName}s")
public List<${NAME}> getAll${NAME}s() {
return ${NAME}Service.getAll${NAME}s();
}
@GetMapping("/${CamelCaseName}/{${CamelCaseName}Id}")
public ${NAME} get${NAME}Details(@PathVariable Long ${CamelCaseName}Id) {
return ${NAME}Service.get${NAME}Details(${CamelCaseName}Id);
}
@PostMapping("/add${NAME}")
public ${NAME} add${NAME}(@RequestBody ${NAME} ${CamelCaseName}) {
return ${NAME}Service.add${NAME}(${CamelCaseName});
}
@PutMapping("/update${NAME}/{${CamelCaseName}Id}")
public ${NAME} update${NAME}(@PathVariable Long ${CamelCaseName}Id, @RequestBody ${NAME} ${CamelCaseName}) {
return ${NAME}Service.update${NAME}(${CamelCaseName}Id, ${CamelCaseName});
}
@DeleteMapping("/delete${NAME}/{${CamelCaseName}Id}")
public ${NAME} delete${NAME}(@PathVariable Long ${CamelCaseName}Id) {
return ${NAME}Service.delete${NAME}(${CamelCaseName}Id);
}
}
- Click Ok Button
Spring Entity
- On Files tab click on + (Create Template)
- Enter Name as : “SpringController”, and leave Extension as java
- In the Content text box add the following content
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
import lombok.Getter;
import lombok.Setter;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "${NAME}")
public class ${NAME} {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
public ${NAME}() {}
public ${NAME}(Long id, String name) {
this.id = id;
this.name = name;
}
}
- Click Ok Button
Spring Repository
- On Files tab click on + (Create Template)
- Enter Name as : “SpringController”, and leave Extension as java
- In the Content text box add the following content
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#set ($index = $NAME.indexOf('Repository'))
#set ($ENTITY= $NAME.substring(0, $index))
import org.springframework.data.jpa.repository.JpaRepository;
public interface ${NAME} extends JpaRepository<$ENTITY, Long> {
}
- Click Ok Button
Spring Service
- On Files tab click on + (Create Template)
- Enter Name as : “SpringController”, and leave Extension as java
- In the Content text box add the following content
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#set( $CamelCaseName = "$NAME.substring(0,1).toLowerCase()$NAME.substring(1)" )
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
import java.util.Optional;
import javax.management.RuntimeErrorException;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import ${PACKAGE_NAME}.repositories.${NAME}Repository;
@Service
@Transactional
@RequiredArgsConstructor
public class ${Name}Service{
@Autowired
private ${Name}Repository ${CamelCaseName}Repository;
public List<${Name}> getAll${Name}s() {
return ${CamelCaseName}Repository.findAll();
}
public void save${Name}(${Name} ${CamelCaseName}) {
this.${CamelCaseName}Repository.save(${CamelCaseName});
}
public ${Name} get${Name}ById(long id) {
Optional<${Name}> optional = ${CamelCaseName}Repository.findById(id);
${Name} ${CamelCaseName} = null;
if(optional.isPresent()) {
${CamelCaseName} = optional.get();
} else {
throw new RuntimeException("${CamelCaseName} not found for id:"+id);
}
return ${CamelCaseName};
}
public void delete${Name}ById(long id) {
this.${CamelCaseName}Repository.deleteById(id);
}
public Page<${Name}> findPaginated(int pageNo, int pageSize, String sortField, String sortDirection) {
Sort sort = sortDirection.equalsIgnoreCase(Sort.Direction.ASC.name()) ? Sort.by(sortField).ascending() :
Sort.by(sortField).descending();
Pageable pageable = PageRequest.of(pageNo -1,pageSize);
return this.${CamelCaseName}Repository.findAll(pageable);
}
public static ${NAME} update${NAME}(Long ${CamelCaseName}Id, ${NAME} ${CamelCaseName}) {
${NAME} ${CamelCaseName} = ${CamelCaseName}Repository.findById(${CamelCaseName}Id)
.orElseThrow(() -> new ResourceNotFoundException("${NAME} not found for this id :: " + ${CamelCaseName}Id));
${CamelCaseName}.setId(${CamelCaseName}Id);
this.${CamelCaseName}Repository.save(${CamelCaseName})
return ${CamelCaseName};
}
}
- Click Ok Button
Spring Static Service
- On Files tab click on + (Create Template)
- Enter Name as : “SpringController”, and leave Extension as java
- In the Content text box add the following content
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#set( $CamelCaseName = "$NAME.substring(0,1).toLowerCase()$NAME.substring(1)" )
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import ${PACKAGE_NAME}.repositories.${NAME}Repository;
@Service
@Transactional
@RequiredArgsConstructor
@Slf4j
public class ${NAME}Service {
private final ${NAME}Repository ${CamelCaseName}Repository;
private static Map ${CamelCaseName}s = new HashMap<>();
private static Long index=2L;
static {
${NAME} ${CamelCaseName}01 = new ${NAME}(1L, "${CamelCaseName}1");
${NAME} ${CamelCaseName}02 = new ${NAME}(2L, "${CamelCaseName}2");
${CamelCaseName}s.put(1L,${CamelCaseName}01);
${CamelCaseName}s.put(2L,${CamelCaseName}02);
};
public static List<${NAME}> getAll${NAME}s() {
return new ArrayList<>(${CamelCaseName}s.values());
}
public static ${NAME} get${NAME}Details(Long ${CamelCaseName}Id) {
return ${CamelCaseName}s.get(${CamelCaseName}Id);
}
public static ${NAME} add${NAME}(${NAME} ${CamelCaseName}) {
index +=1;
${CamelCaseName}.setId(index);
${CamelCaseName}s.put(index, ${CamelCaseName});
return ${CamelCaseName};
}
public static ${NAME} update${NAME}(Long ${CamelCaseName}Id, ${NAME} ${CamelCaseName}) {
${CamelCaseName}.setId(${CamelCaseName}Id);
${CamelCaseName}s.put(${CamelCaseName}Id, ${CamelCaseName});
return ${CamelCaseName};
}
public static ${NAME} delete${NAME}(Long ${CamelCaseName}Id) {
return ${CamelCaseName}s.remove(${CamelCaseName}Id);
}
}
- Click Ok Button



