---
# System prepended metadata

title: 註解開發管理第三方bean
tags: [Spring-bean的自動裝配]

---

# 註解開發管理第三方bean
###### tags: `Spring-bean的自動裝配`

前面定义bean的时候都是在自己开发的类上面写个注解就完成了，但如果是第三方的类，这些类都是在jar包中，我们没有办法在类上面添加注解，这个时候该怎么办?

遇到上述问题，我们就需要有一种更加灵活的方式来定义bean,这种方式不能在原始代码上面书写注解，一样能定义bean,这就用到了一个全新的注解-- @Bean

### 步骤1:导入对应的jar包
```xml=
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.16</version>
</dependency>
```
### 步骤2:在配置类中添加一个方法
注意该方法的返回值就是要创建的Bean对象类型
```java=
@Configuration
public class SpringConfig {
    public DataSource dataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");
        druidDataSource.setUsername("root");
        druidDataSource.setPassword("********");
        druidDataSource.setUrl("jdbc:mysql://localhost:3306/mybatis");
        return druidDataSource;
    }
}
```

### 步骤3:在方法上添加​​@Bean​​注解
@Bean注解的作用是将方法的返回值制作为Spring管理的一个bean对象
```java=
@Configuration
public class SpringConfig {
    @Bean
    public DataSource dataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");
        druidDataSource.setUsername("root");
        druidDataSource.setPassword("*********");
        druidDataSource.setUrl("jdbc:mysql://localhost:3306/mybatis");
        return druidDataSource;
    }
}
```
**注意:不能使用​​DataSource ds = new DruidDataSource()​​**
因为DataSource接口中没有对应的setter方法来设置属性。

### 步骤4:从IOC容器中获取对象并打印
```java=
public class App9 {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
        DataSource dataSource = ctx.getBean(DataSource.class);
        System.out.println(dataSource);
    }
}
```
![](https://i.imgur.com/HjHcvK8.png)

************
![](https://i.imgur.com/YNmlEzM.png)
![](https://i.imgur.com/OuMbugR.png)
![](https://i.imgur.com/pXwAZIi.png)
![](https://i.imgur.com/gv7nqmg.png)

**************

![](https://i.imgur.com/8p1udTz.png)
![](https://i.imgur.com/wb9Ivye.png)
