मैं वसंत पुनः प्रयास करने की कोशिश कर रहा हूं और मुझे एक अजीब समस्या का सामना करना पड़ रहा है। जब मैं एक रेस्ट कंट्रोलर के भीतर किसी विधि पर पुनः प्रयास एनोटेशन का उपयोग करता हूं, तो पुनः प्रयास नहीं होता है। लेकिन अगर मैं उस विधि को एक अलग सेवा वर्ग में ले जाता हूं, तो यह काम करता है। निम्नलिखित कोड काम नहीं करता है:स्प्रिंग कंट्रोलर में काम नहीं कर रहा है
@RestController
public class HelloController {
@RequestMapping(value = "/hello")
public String hello() {
return getInfo();
}
@Retryable(RuntimeException.class)
public String getInfo() {
Random random = new Random();
int r = random.nextInt(2);
if (r == 1) {
throw new RuntimeException();
} else {
return "Success";
}
}
}
लेकिन निम्नलिखित है:
@RestController
public class HelloController {
@Autowired
private SomeService service;
@RequestMapping(value = "/hello")
public String hello() {
String result = service.getInfo();
return result;
}
}
@Service
public class SomeService {
@Retryable(RuntimeException.class)
public String getInfo() {
Random random = new Random();
int r = random.nextInt(2);
if (r == 1) {
throw new RuntimeException();
} else {
return "Success";
}
}
}
मेरा प्रश्न है क्यों @Retryable
काम नहीं कर रहा है जब नियंत्रक में प्रयोग किया जाता?