Besides Constructor Injection, another way to inject dependencies is through setter methods. While less common than constructor injection, it’s still supported.

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
@Service
public class EmailService {
 
    private MessageSender messageSender;
 
    @Autowired
    public void setMessageSender(MessageSender messageSender) {
        this.messageSender = messageSender;
    }
 
    public void sendEmail(String to, String subject, String body) {
        messageSender.sendMessage(to, subject, body);
    }
}
 
@Component
public class MessageSender {
    public void sendMessage(String to, String subject, String body) {
        System.out.println("Sending message to: " + to);
        // ... actual sending logic
    }
}

Here, Spring uses the @Autowired annotation on the setMessageSender method to inject an instance of MessageSender into EmailService.