【问题标题】:Does spring bean self injection works in new spring versions?spring bean 自注入是否适用于新的 spring 版本?
【发布时间】:2019-10-31 20:27:44
【问题描述】:
@Service
public class UserService implements Service{
   @Autowired
   private Service self;
}

上面的代码在 Spring 新版本 (5.*) 中可以正常工作吗? (我可以自己检查,但我想知道 100%,但我自己可能会以某种方式搞砸) 我也知道解决方法:

@Service(value = "someService")
public class UserService implements Service{
   @Resource(name = "someService")
   private Service self;
}

 @Autowired
private ApplicationContext applicationContext;

所以我不要求什么,我需要知道 100% 我需要专业人士的建议,我不相信自己的实验,因为我在 Spring 方面没有太多经验(例如,那里有很多模糊的配置)。希望这能澄清我为什么要问而不是实验。

【问题讨论】:

  • 看来试一试会比在这里问更快更权威。
  • 是的,但尝试是不够的,我想 100% 确定如上所述。从技术上讲,成功的实验并不是 100% 的证明
  • 这是一个逻辑:不成功的实验证明,但成功没有。假设您成功一次(甚至多次)投掷一枚硬币并赢得一角硬币。不代表每次都是这样的结果。
  • 为什么这是一个理想的功能?似乎是一种非常冗长的写作方式this
  • 在 Spring Framework 中,"this" 不起作用,由于代理机制

标签: spring dependency-injection spring-bean


【解决方案1】:

好的,我找到了答案: 使用 Spring 4,可以自行自动接线

@Service
@Transactional
public class UserServiceImpl implements UserService{
    @Autowired
    private  UserRepository repository;

    @Autowired
    private UserService userService;

    @Override
    public void update(int id){
       repository.findOne(id).setName("ddd");
    }

    @Override
    public void save(Users user) {
        repository.save(user);
        userService.update(1);
    }
}

【讨论】:

    猜你喜欢
    • 2016-07-02
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 2023-02-04
    相关资源
    最近更新 更多