• Spring(七)注解开发管理第三方Bean


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

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

    注意该方法的返回值就是要创建的Bean对象类型
    (2)在方法上添加 @Bean 注解
    @Bean 注解的作用是将方法的返回值制作为Sp ring 管理的一个 bean对象
    1. @Configuration
    2. public class SpringConfig {
    3. //1.第一一个方法获得要管理的对象
    4. //2.添加@Bean,表示当前方法的返回值是一个bean
    5. @Bean
    6. public DataSource dataSource(){
    7. DruidDataSource ds = new DruidDataSource();
    8. ds.setDriverClassName("com.mysql.jdbc.Driver");
    9. ds.setUrl("jdbc:mysql://localhost:3306/spring_db");
    10. ds.setUsername("root");
    11. ds.setPassword("root");
    12. return ds;
    13. }
    14. }
    (3)客户端类
    1. public class App {
    2. public static void main(String[] args) {
    3. AnnotationConfigApplicationContext ctx = new
    4. AnnotationConfigApplicationContext(SpringConfig.class);
    5. DataSource dataSource = ctx.getBean(DataSource.class);
    6. System.out.println(dataSource);
    7. }
    8. }

    二、引入外部配置类

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

    (1)添加一个  JdbcConfig 配置类
    1. public class JdbcConfig {
    2. @Bean
    3. public DataSource dataSource(){
    4. DruidDataSource ds = new DruidDataSource();
    5. ds.setDriverClassName("com.mysql.jdbc.Driver");
    6. ds.setUrl("jdbc:mysql://localhost:3306/spring_db");
    7. ds.setUsername("root");
    8. ds.setPassword("root");
    9. return ds;
    10. }
    11. }
    (2) Spring 配置类中引入
    1. @Configuration
    2. @Import({JdbcConfig.class})
    3. public class SpringConfig {
    4. }
    注意:
    1️⃣@Import  参数需要的是一个数组,可以引入多个配置类。
    2️⃣@Import  注解在配置类中只能写一次

    2. 使用包扫描引入

    (1) Spring的配置类上添加包扫描
    1. @Configuration
    2. @ComponentScan("com.itheima.config")
    3. public class SpringConfig {
    4. }
    (2) JdbcConfig上添加配置注解
    1. @Configuration
    2. public class JdbcConfig {
    3. @Bean
    4. public DataSource dataSource(){
    5. DruidDataSource ds = new DruidDataSource();
    6. ds.setDriverClassName("com.mysql.jdbc.Driver");
    7. ds.setUrl("jdbc:mysql://localhost:3306/spring_db");
    8. ds.setUsername("root");
    9. ds.setPassword("root");
    10. return ds;
    11. }
    12. }
    这种方式虽然能够扫描到,但是不能很快的知晓都引入了哪些配置类,所有这种方式不推荐使用。

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

    1. 简单数据类型

    (1)使用@Value注解引入值
    1. @Configuration
    2. public class JdbcConfig {
    3. @Value("com.mysql.jdbc.Driver")
    4. private String driver;
    5. @Value("jdbc:mysql://localhost:3306/spring_db")
    6. private String url;
    7. @Value("root")
    8. private String userName;
    9. @Value("password")
    10. private String password;
    11. @Bean
    12. public DataSource dataSource(){
    13. DruidDataSource ds = new DruidDataSource();
    14. ds.setDriverClassName(driver);
    15. ds.setUrl(url);
    16. ds.setUsername(userName);
    17. ds.setPassword(password);
    18. return ds;
    19. }
    20. }

    2. 引用数据类型

    (1)在 SpringConfig 中扫描 BookDao
    (2)在 JdbcConfig 类的方法上添加参数
    1. @Configuration
    2. public class JdbcConfig {
    3. @Value("com.mysql.jdbc.Driver")
    4. private String driver;
    5. @Value("jdbc:mysql://localhost:3306/spring_db")
    6. private String url;
    7. @Value("root")
    8. private String userName;
    9. @Value("password")
    10. private String password;
    11. @Bean
    12. public DataSource dataSource(BookDao bookDao){
    13. System.out.println(bookDao);
    14. DruidDataSource ds = new DruidDataSource();
    15. ds.setDriverClassName(driver);
    16. ds.setUrl(url);
    17. ds.setUsername(userName);
    18. ds.setPassword(password);
    19. return ds;
    20. }
    21. }
    引用类型注入只需要为 bean 定义方法设置形参即可,容器会根据类型自动装配对象。

    四、XML 配置比对注解配置

     

  • 相关阅读:
    openssl源码及编译
    游戏中的-雪花算法
    爱上算法,迷人的两度搜索,深度优先(DFS)和广度优先(BFS)
    windows查看并关闭端口对应进程占用的命令
    C++中为何需要函数
    SSM甜品小屋网上订餐系统的设计与实现毕业设计-附源码151018
    vue3 子组件实现v-model用法
    WPF —— ToolBar、Checkbox控价详解
    window安装rust
    腾讯会议对接日记——JWT Tocken使用方法
  • 原文地址:https://blog.csdn.net/yirenyuan/article/details/127702301