#java #spring #functional-interface
#java #весна #функциональный интерфейс
Вопрос:
Я хочу получить доступ к методу класса обслуживания из функционального интерфейса в Spring Java 8. Возможно ли это?
public interface UserProfile extends Supplier<UserProfileDto> {
// This is working
static UserProfile getMyId() {
return () ->
new UserProfileDto(
SecurityContextHolder.getContext().getAuthentication().getName(),
"", "", "");
}
static UserProfile getMyProfile() {
return () ->
}
}
@Service("userProfileService")
public class UserProfileServiceImpl implements UserProfileService {
private final UserProfileRepo userProfileRepo;
@Autowired
public UserProfileServiceImpl(@Qualifier("userProfileSql") UserProfileRepo userProfileRepo) {
this.userProfileRepo = userProfileRepo;
}
@Override
public Optional<UserProfileDto> getUserProfileById(String userId) {
return userProfileRepo.selectUserProfileById(userId);
}
}
Я хочу вызвать метод класса обслуживания «getUserProfileById(SecurityContextHolder.getContext().getAuthentication().getName())» в getMyProfile() в UserProfile. Возможно ли это?
Комментарии:
1. Нет, это невозможно.
2. Нет. Это интерфейсный метод, так что нет.
3. Вы можете определить статический член типа
Function<String, UserProfile>
inUserProfile
, который вы устанавливаете из службы после его инициализации. Но это настолько нечисто, что я не буду публиковать это в качестве ответа.4. Спасибо.. Если я использую SPEL для его решения. Возможно ли это? Заранее спасибо.
Ответ №1:
Нет, вы не можете получить доступ к методу класса обслуживания из функционального интерфейса