Standard way:
@RestController
public class Main {
    UserService userService;
    public Main(){
        userService = new UserServiceImpl();
    }
    @GetMapping("/")
    public String index(){
        return userService.print("Example test");
    }
}
User service interface:
public interface UserService {
    String print(String text);
}
UserServiceImpl class:
public class UserServiceImpl implements UserService {
    @Override
    public String print(String text) {
        return text + " UserServiceImpl";
    }
}
Output: Example test UserServiceImpl
That is a great example of tight coupled classes, bad design example and there will be problem with testing (PowerMockito is also bad).
Now let's take a look at SpringBoot dependency injection, nice example of loose coupling:
Interface remains the same,
Main class:
@RestController
public class Main {
    UserService userService;
    @Autowired
    public Main(UserService userService){
        this.userService = userService;
    }
    @GetMapping("/")
    public String index(){
        return userService.print("Example test");
    }
}
ServiceUserImpl class:
@Component
public class UserServiceImpl implements UserService {
    @Override
    public String print(String text) {
        return text + " UserServiceImpl";
    }
}
Output: Example test UserServiceImpl
and now it's easy to write test:
@RunWith(MockitoJUnitRunner.class)
public class MainTest {
    @Mock
    UserService userService;
    @Test
    public void indexTest() {
        when(userService.print("Example test")).thenReturn("Example test UserServiceImpl");
        String result = new Main(userService).index();
        assertEquals(result, "Example test UserServiceImpl");
    }
}
I showed @Autowired annotation on constructor but it can also be used on setter or field.