您现在的位置是:首页 >技术交流 >SSM框架学习-注解开发第三方bean管理网站首页技术交流

SSM框架学习-注解开发第三方bean管理

码农.拉格朗日 2024-06-14 17:19:22
简介SSM框架学习-注解开发第三方bean管理

1. 复习xml配置文件管理第三方bean

在Spring中,可以使用依赖注入(Dependency
Injection)来管理和使用第三方Bean。Spring提供了多种方式来进行依赖注入,比如构造函数注入、Setter方法注入、字段注入等。下面以Setter方法注入为例:

  1. 首先,在Spring的配置文件中声明需要注入的第三方Bean的信息和需要注入的类的信息:
<bean id="thirdPartyBean" class="com.example.ThirdPartyBean" />

<bean id="myService" class="com.example.MyService">
    <property name="thirdPartyBean" ref="thirdPartyBean" />
</bean>
  1. 在需要使用第三方Bean的类中,提供一个Setter方法来接收该Bean:
public class MyService {
    private ThirdPartyBean thirdPartyBean;

    public void setThirdPartyBean(ThirdPartyBean thirdPartyBean) {
        this.thirdPartyBean = thirdPartyBean;
    }

    // 使用thirdPartyBean进行操作
}

通过上述配置和代码,Spring就可以自动将第三方Bean注入到MyService类中,从而实现对第三方Bean的管理和使用。

2. 注解开发第三方bean管理

  • 方法一:导入式

在这里插入图片描述
在这里插入图片描述

  • 方法二:扫描式

不推荐使用,扫描式管理方式可能会导致依赖注入的性能问题。因为Spring在扫描classpath内的所有类并识别出需要注入的Bean时需要花费一定的时间。
一些较新的IoC容器,如Jigsaw,已经在尝试默认不进行扫描式管理。

在这里插入图片描述

部分代码优化,简单类型注入

public class JdbcConfig {
    //1.定义一个方法获得要管理的对象
    @Value("com.mysql.jdbc.Driver")
    private String driver;
    @Value("jdbc:mysql://localhost:3306/spring_db")
    private String url;
    @Value("root")
    private String userName;
    @Value("root")
    private String password;
    //2.添加@Bean,表示当前方法的返回值是一个bean
    //@Bean修饰的方法,形参根据类型自动装配
    @Bean
    public DataSource dataSource(){
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(userName);
        ds.setPassword(password);
        return ds;
    }
}

引用类型注入,只需要加入形参即可

原理是利用了Spring容器中的Bean定义和Bean工厂。当Spring容器启动时,会扫描所有的Bean定义,并将其解析为Bean工厂的Bean实例。这些Bean实例根据其作用域和生命周期管理,可以在整个应用程序的运行过程中被重复使用。

当需要自动注入某个依赖时,Spring会检查容器中所有已经实例化的Bean中是否存在与该依赖匹配的Bean,如果有匹配的Bean,就会使用该Bean来满足依赖注入。在引用类型注入时,Spring根据注解所在的位置,来确定需要注入的Bean的类型和名称,从而找到匹配的Bean实例进行注入

public DataSource dataSource(BookDao bookDao)

简单来说,当我们只需要在Java类中声明一个引用参数,而不需要显式创建一个Bean实例并将其传递给该参数,并以此获得一个依赖时,Spring会在容器中查找是否存在符合类型和名称的Bean实例,从而完成自动注入。这样可以减少重复代码的编写,并方便后续的维护和升级。

在这里插入图片描述

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。