【问题标题】:@Autowired does not work while migrating from Spring 3.1.9 to Spring 4.2.4. But works with Spring 3 and Java7从 Spring 3.1.9 迁移到 Spring 4.2.4 时,@Autowired 不起作用。但适用于 Spring 3 和 Java7
【发布时间】:2020-05-14 16:28:03
【问题描述】:

在运行时,我一直在用@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;

【问题讨论】:

    标签: java spring spring-mvc migration version


    【解决方案1】:

    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/添加最新的依赖项

    【讨论】:

    • 嗨,Artur,这在我的场景中根本行不通。在这里,@Autowired 在放置在接口上时失败。并且有许多相同接口的实现。所以这意味着,我有许多相同接口的实现类。希望这可以使问题更加清晰。同样在我的示例中,我提到了接口上的自动装配。并且代码使用java8和spring4.2.4编译。
    猜你喜欢
    • 1970-01-01
    • 2021-09-23
    • 2016-06-06
    • 2023-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    相关资源
    最近更新 更多