Прежде всего, что означает «безопасный тип» для структуры внедрения зависимостей. Я могу думать о том, что вы можете получить компонент из контекста, указав тип, а не просто имя компонента. Spring 3 позволяет это.
В противном случае безопасность типов означает, что когда вы можете определить свои зависимости по их типу. И вы можете сделать это во всех версиях весны.
Еще одна вещь - безопасность во время компиляции. В Spring pre-3.0, когда вам приходилось различать два bean-компонента с одинаковым интерфейсом (или супертипом), используя их строковое имя. Весной 3.0 вы можете использовать аннотации на основе квалификаторов (используя javax.inject.Qualifier
), так что это также безопаснее во время компиляции.
Еще одна вещь, которую стоит упомянуть, это использование дженериков. Вы можете иметь, например, @Inject List<MyService>
весной.