首页 > 解决方案 > 从 Spring 3.1.9 迁移到 Spring 4.2.4 时,@Autowired 不起作用。但适用于 Spring 3 和 Java7

问题描述

在运行时,我一直在用@Autowired 面对 DI。请看我在编译期间没有遇到任何问题。我添加了 4.2.4 版本的 spring-beans、spring-context、spring-core jar。相同的代码适用于 Spring 3 而不是 Spring 4。非常感谢任何建议。诸如配置检查或 Maven 依赖项之类的建议也会有所帮助。

下面的示例代码

@Component
@Qualifier(Names.NAME2_1)
public class ClassA implements InterfaceA {

    @Autowired
    @Qualifier(Names.NAME2)
    private InterfaceB<Entity> variable1;

标签: javaspringspring-mvcmigrationversion

解决方案


Spring 官方文档说最好通过 setter 进行注入。

// Fields
    //
    private UserRepository userRepository;

    private PasswordEncoder passwordEncoder;


    // Injects are here
    //
    @Autowired
    public void setUserRepository(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    @Autowired
    public void setPasswordEncoder(PasswordEncoder passwordEncoder) {
        this.passwordEncoder = passwordEncoder;
    }

不要忘记从https://mvnrepository.com/添加最新的依赖项


推荐阅读