【Spring全家桶系列】Spring下使用注解管理第三方对象

本文介绍了在Spring环境中如何使用注解管理第三方对象,如数据库连接池Druid。通过@Bean注解创建Bean对象,@Import注解导入配置类,详细阐述了配置数据源的过程,并提倡按模块划分配置类,提高代码可读性。同时提到了使用properties文件动态加载配置的重要性。
摘要由CSDN通过智能技术生成

⭐️前面的话⭐️

本文已经收录到《Spring框架全家桶系列》专栏,本文将介绍在Spring环境下基于注解完成第三方对象的管理。

📒博客主页:未见花闻的博客主页
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📌本文由未见花闻原创,CSDN首发!
📆首发时间:🌴2023年5月10日🌴
✉️坚持和努力一定能换来诗与远方!
💭推荐书籍:📚《无》
💬参考在线编程网站:🌐牛客网🌐力扣🌐acwing
博主的码云gitee,平常博主写的程序代码都在里面。
博主的github,平常博主写的程序代码都在里面。
🍭作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!



封面


1.前言

前面我们已经在基于XML的基础上对数据库连接池进行了管理,本质上就是将对应的DataSource对象实例化到Bean容器当中,然后进行调用即可。

其实思路都是一样的,只不过实现的思路不同罢了。

首先准备一下环境,导入Druid数据库连接池依赖,创建properties配置文件,创建项目的配置类。

相关依赖:

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.17</version>
        </dependency>

项目结构:

1

2.基于注解完成对第三方对象的管理

第一步,导入相关依赖的包

主要包括spring依赖,Druid依赖,因为连接Druid数据库连接池属于配置操作,所以我们将它放入配置类当中。

第二步,在配置类中配置dataSource

注意该方法的返回值就是要创建的Bean对象类型
2
@Bean注解的作用是将方法的返回值制作为Spring管理的一个bean对象。

注意:不能使用DataSource dataSource = new DruidDataSource()

因为DataSource接口中没有对应的setter方法来设置属性。

第三步,获取第三方Bean对象

3

运行结果:
4
OK,大功告成,简单吧,留个小任务,尝试配置c3p0数据库连接池,其实步骤是一模一样的。

如果有多个bean要被Spring管理,直接在配置类中多些几个方法,方法上添加@Bean注解即可。

如果把所有的第三方bean都配置到Spring的配置类SpringConfig中,虽然可以,但是不利于代码阅读和分类管理,所有我们就想能不能按照类别将这些bean配置到不同的配置类中?

答案是肯定的,在实际的开发过程当中,并不推荐将所有的配置都配置到Spring的配置类当中,更建议针对不同模块在不同的配置类上进行配置,我们可以再建一个配置类JdbcConfig类来进行配置。

还有一个问题,我们配置的内容好像并不是一尘不变的吧,所以需要导入properties文件使用@Value注解引入配置。

第四步,新建数据库连接池专用配置类

将JdbcConfig放入扫描的包下,即可。
5

运行程序,发现是可以正常运行的,但是在工程中一般不推荐通过包扫描的方式导入配置类,如果在同一个包下,有些配置类想导入,有些不想呢?

所以推荐使用@Import注解将配置类导入到Spring配置当中,并且该方案不要求在JdbcConfig类上加上@Configuration注解。

6
运行结果:
7
注意:

  • 扫描注解可以移除
  • @Import参数需要的是一个数组,可以引入多个配置类。
  • @Import注解在配置类中只能写一次,下面的方式是不允许的
@Configuration
//@ComponentScan("com.annotation.bean.demo.config")
@Import(JdbcConfig.class)
@Import(Xxx.class)
public class SpringConfig {}
  • 如果需要导入多个配置类,按照数组的方式将配置类依次写上。
@Import({JdbcConfig.class, Xxx.class, ...})

第五步,换用properties文件加载

配置时,不能将配置信息写死,下面来导入properties文件的属性。

我们在JdbcConfig类中,添加需要使用的属性,然后使用@Value注解将properties文件当中的属性导入,再在方法当中将值导入到DataSource。

8
配置JdbcConfig:

9

0

运行结果:
10

我们在配置DataSource对象时,我们需要的参数都是简单类型参数,可以使用添加属性的方式基于@Value注解注入对应的参数。

那如果我们需要一个对象的时候应该怎么办呢?

我们可以加上@Bean注解,然后在方法的形参列表当中加入所需要的类型,这样spring就会自动去容器当中去寻找,如果找到了,就会将对象注入进去。

我们创建一个dao包,里面写一个实体类,写一个save输出一句话。

11

将这个类型加到dataSource方法列表:
12
这样就可以实现在方法当中对象的注入了,当然也可以建一个对象属性使用@Resoure注解或@Autowired注解,然后在方法中引用, 但是这样直接写参数好像更简便一点吧。

3.总结

知识点1:@Bean

名称@Bean
类型方法注解
位置方法定义上方
作用设置该方法的返回值作为spring管理的bean
属性value(默认):定义bean的id

知识点2:@Import

名称@Import
类型类注解
位置类定义上方
作用导入配置类
属性value(默认):定义导入的配置类类名,
当配置类有多个时使用数组格式一次性导入多个配置类

前面我们已经完成了XML配置和注解的开发实现,至于两者之间的差异,咱们放在一块去对比回顾下:

13


觉得文章写得不错的老铁们,点赞评论关注走一波!谢谢啦!

1-99

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未见花闻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值