一、注解开发管理第三方bean

 (1)在配置类中添加一个方法

注意该方法的返回值就是要创建的Bean对象类型
(2)在方法上添加
@Bean
注解
@Bean 注解的作用是将方法的返回值制作为Sp ring
管理的一个
bean对象
@Configuration
public class SpringConfig {

    //1.第一一个方法获得要管理的对象
    //2.添加@Bean,表示当前方法的返回值是一个bean
    @Bean
    public DataSource dataSource(){
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName("com.mysql.jdbc.Driver");
        ds.setUrl("jdbc:mysql://localhost:3306/spring_db");
        ds.setUsername("root");
        ds.setPassword("root");
        return ds;
    }
}
(3)客户端类
public class App {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext ctx = new
                AnnotationConfigApplicationContext(SpringConfig.class);
        DataSource dataSource = ctx.getBean(DataSource.class);
        System.out.println(dataSource);
    }
}

二、引入外部配置类

1. 使用 @Import 引入(推荐)

(1)添加一个 
JdbcConfig 配置类
public class JdbcConfig {

    @Bean
    public DataSource dataSource(){
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName("com.mysql.jdbc.Driver");
        ds.setUrl("jdbc:mysql://localhost:3306/spring_db");
        ds.setUsername("root");
        ds.setPassword("root");
        return ds;
    }
}
(2)

Spring
配置类中引入
@Configuration
@Import({JdbcConfig.class})
public class SpringConfig {

}
注意:
1️⃣@Import 
参数需要的是一个数组,可以引入多个配置类。
2️⃣@Import 
注解在配置类中只能写一次

2. 使用包扫描引入

(1)

Spring的配置类上添加包扫描
@Configuration
@ComponentScan("com.itheima.config")
public class SpringConfig {

}
(2)

JdbcConfig上添加配置注解
@Configuration
public class JdbcConfig {

    @Bean
    public DataSource dataSource(){
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName("com.mysql.jdbc.Driver");
        ds.setUrl("jdbc:mysql://localhost:3306/spring_db");
        ds.setUsername("root");
        ds.setPassword("root");
        return ds;
    }
}
这种方式虽然能够扫描到,但是不能很快的知晓都引入了哪些配置类,所有这种方式不推荐使用。

三、注解开发实现为第三方bean注入资源

1. 简单数据类型

(1)使用@Value注解引入值
@Configuration
public class JdbcConfig {

    @Value("com.mysql.jdbc.Driver")
    private String driver;
    @Value("jdbc:mysql://localhost:3306/spring_db")
    private String url;
    @Value("root")
    private String userName;
    @Value("password")
    private String password;

    @Bean
    public DataSource dataSource(){
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(userName);
        ds.setPassword(password);
        return ds;
    }
}

2. 引用数据类型

(1)在 SpringConfig 中扫描 BookDao
(2)在 JdbcConfig 类的方法上添加参数
@Configuration
public class JdbcConfig {

    @Value("com.mysql.jdbc.Driver")
    private String driver;
    @Value("jdbc:mysql://localhost:3306/spring_db")
    private String url;
    @Value("root")
    private String userName;
    @Value("password")
    private String password;

    @Bean
    public DataSource dataSource(BookDao bookDao){
        System.out.println(bookDao);
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(userName);
        ds.setPassword(password);
        return ds;
    }
}
引用类型注入只需要为
bean
定义方法设置形参即可,容器会根据类型自动装配对象。

四、XML 配置比对注解配置

 


版权声明:本文为yirenyuan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/yirenyuan/article/details/127702301