call by reference는
함수가 인수를 전달할 때 사용되는 방식 중 하나로,
메모리 주소를 전달해 값이 아닌 변수의 참조를 전달하는 방식입니다.
대표적으로 사용되는 경우로
1) 함수 내부에서 여러 개의 값을 반환해야 할 때,
2) 함수 호출 시 매우 큰 데이터 구조를 전달해야 할 때,
3) 전역 변수를 변경하거나 수정해야 할 때가 있습니다.
Call by value (값에 의한 호출)는 메소드에 변수를 전달할 때, 해당 변수의 값이 복사되어 메소드 내에서 사용됩니다. 따라서 메소드 내에서 변수의 값을 변경하더라도 호출자의 변수는 변경되지 않습니다. 스프링에서는 메소드 호출 시 일반적으로 Call by value 방식을 따릅니다. Call by reference (참조에 의한 호출)은 메소드에 변수를 전달할 때 변수의 참조(메모리 주소)가 전달되며, 메소드 내에서 변수를 수정하면 호출자의 변수도 변경됩니다. 이것은 자바에서 직접 지원하지 않습니다. 스프링에서는 이러한 방식을 직접 사용하지 않고, 대신 객체를 전달하여 객체 내부의 상태를 변경할 수 있습니다.
스프링(Spring)은 Java에서 메소드 호출 시 "Call by value" 방식을 따릅니다. 이는 메소드에 변수를 전달할 때 해당 변수의 값이 복사되어 전달되며, 따라서 메소드 내에서 변수의 값을 변경해도 호출자의 변수는 변경되지 않습니다. 스프링은 객체 지향 프로그래밍을 적극 활용하며, 객체를 전달하여 객체의 상태를 변경하거나 결과를 반환하는 방식을 선호합니다. 객체를 전달하면 객체의 상태 변경과 관리가 더 효율적이며 예측 가능해집니다.