Другим решением было бы поставить вызов: SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this)
в конструктор MileageFeeCalculator следующим образом:
@Service
public class MileageFeeCalculator {
@Autowired
private MileageRateService rateService; // <--- will be autowired when constructor is called
public MileageFeeCalculator() {
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this)
}
public float mileageCharge(final int miles) {
return (miles * rateService.ratePerMile());
}
}
Все значения в Python являются ссылками. Что вам нужно беспокоиться, если тип изменен. Основные числовые и строковые типы, а также tuple
и frozenset
неизменяемы; имена, привязанные к объекту одного из этих типов, могут быть отскакиваны, а не мутированы.
>>> t = 1, 2, 3
>>> t[1] = 42
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
Ответ выше правильный, но я возражаю против семантики «ссылки».
C-подобные языки рассматривают переменные как фиксированные ведра, в которые помещаются значения. Когда вы вызываете функцию, создается новый набор ведер, и значения копируются в них. Иногда, ведро является передачей по ссылке и фактически становится псевдонимом для ведра вызывающего.
Python, с другой стороны, рассматривает переменные как простые метки (имена) для значений (объектов). Когда вы вызываете функцию, создается новый набор меток и наклеивается на те же объекты.
Не имеет смысла упоминать «ссылки» в контексте Python, потому что на каждом другом языке, «Ссылка» подразумевает альтернативу «ценности». У Питона нет такой двойственности; он просто проходит и назначает объекты. Ничто не упоминается - .
Возможно, Nitpicky, но терминология не приводит к путанице для программистов на C ++, которые, например, слышать пропуски Python по ссылкам и не понимать, как переназначить имена вызывающих.
t = 1, [2], 3 ; t[1].append(42)
– Ned Deily 28 May 2011 в 01:58list()
или нарезать все это (L[:]
). Для множеств перейдите кset()
. Для других типов см. Соответствующую документацию. Обратите внимание, что являются i> типами, которые фактически не могут быть клонированы вообще, просто потому, что они представляют внешний ресурс (например,socket
). – Ignacio Vazquez-Abrams 28 May 2011 в 02:28