新涉及到的注解 @Override @Autowired
@Override 注解
作用和功能:
@Override是 Java 自带的注解,用来标识一个方法是从父类或接口中继承或实现的。它是编译时的注解,表示被标注的方法是对父类或接口方法的重写。- 当你使用
@Override注解时,Java 编译器会检查你是否正确重写了父类的方法。如果方法签名不匹配,编译器会报错。
主要用途:
- 增强代码的可读性:清楚地表明方法是重写的。
- 提供编译时的错误检查,防止由于方法名拼写错误或参数类型不匹配导致的问题。
示例:
public class Parent {
public void display() {
System.out.println("Display in Parent");
}
}
public class Child extends Parent {
@Override // 表示重写父类的 display() 方法
public void display() {
System.out.println("Display in Child");
}
}
如果在 Child 类中的 display 方法没有正确地覆盖 Parent 类的方法,而你加上了 @Override 注解,编译器就会报错。这有助于避免无意中写错方法名或参数类型。
@Autowired 注解
作用和功能:
@Autowired是 Spring 框架中的注解,用于自动注入依赖。它可以在字段(成员变量)、构造器、setter 方法上使用。- 当使用
@Autowired注解时,Spring 会自动在容器中寻找匹配的 Bean 并注入到被标注的字段或方法中。这种依赖注入(DI, Dependency Injection)是 Spring 的核心特性之一。
自动注入的规则:
- Spring 会通过类型(by type)来查找匹配的 Bean。如果找到多个同类型的 Bean,可以通过
@Qualifier指定 Bean 的名称。 - 如果没有找到合适的 Bean,或者找到多个而不明确时,会报出
NoSuchBeanDefinitionException或NoUniqueBeanDefinitionException。
示例:
-
字段注入:
@Service public class UserService { @Autowired private UserRepository userRepository; // 自动注入 UserRepository 对象 // ... } -
构造器注入(推荐使用):
@Service public class UserService { private final UserRepository userRepository; @Autowired public UserService(UserRepository userRepository) { this.userRepository = userRepository; } // ... }使用构造器注入,可以让依赖注入在实例化时完成,有助于创建不可变对象,并且更易于单元测试。
-
Setter 方法注入:
@Service public class UserService { private UserRepository userRepository; @Autowired public void setUserRepository(UserRepository userRepository) { this.userRepository = userRepository; } // ... }
@Autowired 的优势:
- 使得类与类之间的依赖关系更加清晰。
- 提高代码的可维护性,使得更容易进行模块的单独测试和维护。
- 通过依赖注入,可以更好地实现面向接口编程和解耦合。
总结:
@Override主要用于重写父类或接口中的方法,并进行编译时检查。@Autowired用于在 Spring 中自动注入依赖对象,使得类之间的依赖关系更清晰、更易维护。
项目分区导航: 处理http请求的注解 ⬅️ | 07-新涉及到的注解 @Override @Autowired | ➡️ 关于pom.xml
💬 评论