@Autowired的基本使用

含义:自动装配,装配JavaBean,按照类型,通过set方法进行装配,set方法可以省略 ​ 位置:修  饰成员变量 ​

语法:@AutoWired(属性名="属性值") ​

作用: 替换:<property></property>

public class StudentServiceImp implements StudentService {
    @Autowired
    private StudentDao dao;

    public void setDao(StudentDao dao) {
        this.dao = dao;
    }

    public void add() {
        System.out.println("======service的新增========");
        dao.add();
    }
}

注意: ​

1.次注解按照类型装配 ​

2.要结合扫描一起使用,没有扫描在容器中找不到用@AutoWired注入的类

3.按照类型装配,容器中必须有一个类型与之匹配,如果没有类型可以匹配,则会报异常 ​ NoSuchBeanDefinitionException ​

4.按照类型装配,容器中如果有多个类型与之匹配,则会自动切换为按照名称装配,如果还没有,则会报异常 ​ NoUniqueBeanDefinitionException

 

 有两个实现类实现同一个接口,它会按照名称进行匹配,方法名和哪个实现类的名称一样就会匹配哪个。

5.使用@Autowired的当前类也必须由spring容器托管(即@Coponent、@Controller、@Service 、@repository修饰类)

要是有的想按照类型有的想按照名字可以尝试@Resource

@Resource的作用相当于@Autowired,只不过@Autowired按类型自动注入,而@Resource默认按 名称自动注入。@Resource有两个属性是比较重要的,分是name和type,顾名思义name是按照名称。type是按照类型

`@Autowired`是一个Spring框架提供的注解,用于自动装配组件之间的依赖关系。它主要用于简化类之间依赖注入的工作,使得开发者可以更专注于业务逻辑而非复杂的依赖管理。 ### `@Autowired`的基本使用 `@Autowired`注解通常应用于无参构造函数、setter方法、以及通过bean名称获取bean的对象上下文中。它允许Spring容器在实例化类的时候,自动查找并注入匹配的依赖项到类的成员变量上。 #### 使用场景示例: 假设有一个服务类需要注入一个数据库连接,而这个数据库连接由另一个配置好的Bean提供。 ```java @Service public class UserService { private final UserRepository userRepository; public UserService(@Autowired UserRepository userRepository) { this.userRepository = userRepository; } // ...其他业务方法... } ``` 在这个例子中,`UserService`类的构造函数接收了一个`UserRepository`类型的参数,并使用了`@Autowired`注解。Spring容器会负责查找并注入匹配的`UserRepository` Bean给`UserService`。 ### `@Autowired`的高级用法 - **按类型自动装配**:默认情况就是按类型自动装配。 - **按类型和名称组合装配**:如果需要指定更精确的依赖项,可以配合`@Qualifier`注解一起使用。 - **按名称装配**:当有多个同类型的bean时,可以显式地通过`@Autowired("name")`指定装配的bean名。 ### 相关问题 - 针对`@Autowired`使用: 1. **如何避免依赖注入时的重复声明**?在某些复杂的应用中,可能会遇到多个地方都需要依赖注入同样的bean,这时可以通过创建单独的服务层或者中间层来集中处理这些依赖。 2. **在非Spring环境中使用`@Autowired`**?虽然`@Autowired`主要是Spring框架的一部分,但在一些集成测试环境或者模拟测试中,可以通过Mockito等工具来模拟其功能。 3. **如何优雅地处理依赖注入失败的情况**?例如,通过自定义异常处理机制,在发现依赖无法被注入时给出明确的错误信息,而不是让程序崩溃。 以上内容涵盖了`@Autowired`的主要使用场景及一些高级用法,希望对你理解和应用Spring框架有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值