Код: Выделить всё
@Configuration
public class CacheConfiguration {
@Bean
@RequestScope
public UsersHandledInRequestCache usersHandledInRequestCache() {
return new UsersHandledInRequestCache();
}
public static class UsersHandledInRequestCache {
private final Set cachedUsersIds = new HashSet();
public void cache(Integer userId) {
this.cachedUsersIds.add(userId);
}
public boolean isCached(Integer userId) {
return this.cachedUsersIds.contains(userId);
}
}
}
Код: Выделить всё
@Service
public class UserService {
@Resource(name = "usersHandledInRequestCache")
private CacheConfiguration.UsersHandledInRequestCache usersHandledInRequestCache;
public void doSomething(Integer userId) {
if (!usersHandledInRequestCache.isCached(userId)) {
// do something
usersHandledInRequestCache.cache(userId);
}
}
}
Код: Выделить всё
@RestController
@RequiredArgsConstructor
@RequestMapping("/users")
public class UserController {
private final UserService userService;
@PostMapping
public void doSomething(@RequestBody Collection usersIds) {
usersIds.forEach(userService::doSomething);
}
}
Код: Выделить всё
@Component
@RequiredArgsConstructor
public class UserJob {
private final UserService userService;
@Scheduled(cron = "0 0 7 * * *")
public void doSomething() {
userService.getSomeUsersIds.forEach(userService::doSomething);
}
}
Ошибка создания bean-компонента с именем
'scopedTarget.usersHandledInRequestCache': Scope 'запрос' не
активен для текущего потока; рассмотрите возможность определения прокси-сервера с ограниченной областью действия для
этого компонента, если вы собираетесь ссылаться на него из синглтона; Вложенным
исключением является java.lang.IllegalStateException: запрос, связанный с потоком,
не найден: вы ссылаетесь на атрибуты запроса за пределами фактического
веб-запроса или обрабатываете запрос за пределами исходногополучающий поток? Если вы на самом деле работаете с веб-запросом
и все равно получаете это сообщение, ваш код, вероятно, выполняется вне
DispatcherServlet: в этом случае используйте RequestContextListener или
RequestContextFilter, чтобы предоставить текущий запрос.
Я хочу создать bean-компонент UsersHandledInRequestCache с областью «запрос» и областью «расписание» одновременно. Как я могу это получить?
Подробнее здесь: https://stackoverflow.com/questions/765 ... t-one-time
Мобильная версия