Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is the role of a service class in Spring Boot?
A service class contains business logic. It acts as a middle layer between controllers and repositories, handling data processing and rules before saving or returning data.
Click to reveal answer
beginner
Why should business logic not be placed in controllers or repositories?
Controllers should only handle HTTP requests and responses, while repositories manage data access. Putting business logic in services keeps code organized, easier to test, and maintainable.
Click to reveal answer
beginner
How do you annotate a service class in Spring Boot?
Use the @Service annotation above the class. This tells Spring to treat it as a service component and manage it as a bean.
Click to reveal answer
intermediate
What is a common pattern for calling a service from a controller?
The controller injects the service using @Autowired or constructor injection, then calls service methods to perform business logic before returning results.
Click to reveal answer
intermediate
Give an example of business logic that belongs in a service.
Calculating discounts, validating user input beyond simple format checks, or deciding if a user can perform an action based on roles are examples of business logic for services.
Click to reveal answer
What annotation marks a class as a service in Spring Boot?
A@Controller
B@Service
C@Repository
D@ComponentScan
✗ Incorrect
The @Service annotation marks a class as a service component in Spring Boot.
Where should business logic primarily reside in a Spring Boot app?
AIn the repository
BIn the controller
CIn the service layer
DIn the application.properties file
✗ Incorrect
Business logic belongs in the service layer to keep code organized and maintainable.
Which of these is NOT a responsibility of a service class?
AHandling HTTP requests
BApplying business rules
CCalling repositories
DProcessing data
✗ Incorrect
Handling HTTP requests is the controller's job, not the service's.
How does a controller typically get access to a service?
ABy using @Autowired or constructor injection
BBy creating a new instance with 'new'
CBy calling static methods
DBy reading from a config file
✗ Incorrect
Spring injects service beans into controllers using @Autowired or constructor injection.
Which example is a good candidate for business logic in a service?
ADefining database schema
BMapping a URL to a method
CSaving data to the database
DChecking if a user is allowed to access a feature
✗ Incorrect
Deciding user permissions is business logic and belongs in the service layer.
Explain why business logic should be placed in service classes rather than controllers or repositories.
Think about keeping code organized and responsibilities clear.
You got /5 concepts.
Describe how a Spring Boot controller interacts with a service to perform business logic.
Focus on the flow from controller to service to repository.
You got /5 concepts.
Practice
(1/5)
1. In Spring Boot, where should the main business logic of an application be placed?
easy
A. Inside a class annotated with @Service
B. Directly inside the controller methods
C. Within the repository interfaces
D. In the main application class
Solution
Step 1: Understand Spring Boot layering
Controllers handle HTTP requests, repositories handle data access, and services contain business logic.
Step 2: Identify the correct annotation for business logic
The @Service annotation marks classes that hold business logic in Spring Boot.
Final Answer:
Inside a class annotated with @Service -> Option A
Quick Check:
Business logic = @Service class [OK]
Hint: Business logic goes in @Service classes, not controllers or repos [OK]
Common Mistakes:
Putting business logic in controllers
Adding logic inside repository interfaces
Mixing business logic in the main application class
2. Which of the following is the correct way to declare a service class in Spring Boot?
easy
A. @Service public class UserService {}
B. public class UserService {}
C. @Repository public class UserService {}
D. @Controller public class UserService {}
Solution
Step 1: Recognize the annotation for service classes
Spring Boot uses @Service to mark service classes that contain business logic.
Step 2: Check the options for correct annotation
Only @Service public class UserService {} uses @Service correctly on the class declaration.
Final Answer:
@Service public class UserService {} -> Option A
Quick Check:
Service class = @Service annotation [OK]
Hint: Use @Service annotation to mark service classes [OK]
Common Mistakes:
Using @Repository or @Controller instead of @Service
Forgetting to add any annotation
Placing @Service on interfaces instead of classes
3. Given the following service method, what will be the output when calculateDiscount(150) is called?
public class DiscountService {
public int calculateDiscount(int price) {
if (price > 100) {
return price * 20 / 100;
} else {
return price * 10 / 100;
}
}
}
medium
A. 20
B. 30
C. 10
D. 15
Solution
Step 1: Check the input value and condition
The input price is 150, which is greater than 100, so the first branch applies.
Step 2: Calculate the discount
Discount = 150 * 20 / 100 = 30, but since integer division is used, it remains 30.
Final Answer:
30 -> Option B
Quick Check:
Price > 100 -> 20% discount = 30 [OK]
Hint: Check conditions carefully and do integer math for discounts [OK]
Common Mistakes:
Choosing 20 thinking it's the percentage, not the amount
Confusing the else branch discount
Ignoring integer division effects
4. Identify the error in this service class code snippet:
@Service
public class OrderService {
@Autowired
private OrderRepository orderRepository;
public void saveOrder(Order order) {
orderRepository.save(order)
}
}
medium
A. Service class must extend a base class
B. OrderRepository should not be autowired
C. Missing semicolon after orderRepository.save(order)
D. Method saveOrder should return a value
Solution
Step 1: Review the method syntax
The line orderRepository.save(order) is missing a semicolon at the end.
Step 2: Validate other parts
Autowired is correct, service classes don't need to extend base classes, and void return is allowed.
Final Answer:
Missing semicolon after orderRepository.save(order) -> Option C
Quick Check:
Missing semicolon = syntax error [OK]
Hint: Check for missing semicolons in method calls [OK]
Common Mistakes:
Thinking @Autowired is wrong here
Assuming service classes must extend something
Believing void methods must return a value
5. You want to add a new feature: calculate the total price after applying a discount and tax in your service. Which approach best follows Spring Boot's business logic principles?
public class PricingService {
private final DiscountService discountService;
private final TaxService taxService;
public PricingService(DiscountService discountService, TaxService taxService) {
this.discountService = discountService;
this.taxService = taxService;
}
public double calculateFinalPrice(double price) {
// Fill in logic here
}
}
hard
A. Add calculation logic directly in the main application class
B. Calculate discount and tax inside controller, then call PricingService with final value
C. Put all calculation logic inside the repository layer
D. Implement calculateFinalPrice to call discountService and taxService methods, then combine results
Solution
Step 1: Understand separation of concerns
Business logic should be inside service classes, not controllers, repositories, or main class.
Step 2: Use existing services inside PricingService
Calling discountService and taxService methods inside calculateFinalPrice keeps logic modular and reusable.
Final Answer:
Implement calculateFinalPrice to call discountService and taxService methods, then combine results -> Option D
Quick Check:
Business logic in services, reuse other services [OK]
Hint: Keep logic in services and reuse other services for clean code [OK]
Common Mistakes:
Putting logic in controller or repository layers
Mixing logic in main application class
Duplicating discount and tax logic outside services