在 Spring 中,“注入 Java 依赖”通常指的是 依赖注入(Dependency Injection, DI),即将一个 Java 对象(Bean)自动交给另一个对象使用。Spring 主流有以下几种方式:
最推荐的方式,适用于必需依赖。
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired // Spring 4.3+ 可省略
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
✅ 优点:
final)适用于 可选依赖。
@Service
public class UserService {
private UserRepository userRepository;
@Autowired
public void setUserRepository(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
}
❌ 缺点:
@Resource(JSR-250)按 名称 注入:
@Resource(name = "userRepository")
private UserRepository userRepository;
@Inject(JSR-330)需引入依赖:
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
</dependency>
@Inject
private UserRepository userRepository;
@Configuration
public class AppConfig {
@Bean
public UserRepository userRepository() {
return new UserRepository();
}
@Bean
public UserService userService() {
return new UserService(userRepository());
}
}
被注入的类必须是 Spring Bean:
@Component@Service@Repository@Controller@Configuration| 场景 | 推荐方式 |
|---|---|
| 必需依赖 | 构造器注入 |
| 可选依赖 | Setter 注入 |
| 老项目 | 字段注入(不推荐) |
如果你有 具体代码场景(如循环依赖、多实现类、Spring Boot),可以进一步说明,我可以给你更精确的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。