Spring之IOC详细分析(2)

一、Spring管理连接池
spring管理的所有的组建默认都是单实例的,其中比较常用的是数据库连接池,保证一个项目只有一个连接池,一个链接池里面可以管理很多链接,spring单实例的特性就可以很好的管理。
在这里插入图片描述
这里有一点要说的是:Spring管理连接池引用外部文件的方法将数据库连接池的文件抽取出一个数据库连接池文件dbconfig.properties。
在这里插入图片描述
要想引入这个文件到配置文件中,就需要Context名称空间,然后将原来的数据库属性名变成${属性名}就可以了
在这里插入图片描述
这里要注意的是,数据库的属性使用username时,会和spring中的username关键字冲突,所以在写数据库外部文件时,一般写jdbc.username。
二、利用注解分别创建DAO、Service、Controller
在我们开发的过程中,为了避免出现过多的类而在配置文件中添加过多的bean,Spring推出了对应DAO、Service、Controller层的注解,一共有四个,
分别是@Controller,Controller层
@Service,Service层
@Repository,dao层
@Component,给不属于以上三层的类添加
这些注解,都可以把添加的类自动的添加到IOC容器中,而且Spring对于这些类的使用并没有限制,但是为了程序的可读性,通常情况下我们根据不同的层对应不同的注解。
这时候就需要告诉Spring,自动扫描这些注解,使用context的名称空间来添加

在这里插入图片描述
同时还需要aop的支持,才能成功使用注解。
三、DI依赖注入:@Autowired自动装配
以前我们编写java程序,创建对象时需要new一个,现在使用了注解之后,在创建对象时就不需要new了,直接使用@Autowired进行依赖注入
在这里插入图片描述
@Autwired注解,Spring会自动的去容器中找到这个属性对应的组件然后进行自动赋值。
@Autowired实现的原理
private Book(类型) book(变量名);
(1)先按照类型去容器中找到对应的组件
①找到一个时就赋值
②没有找到抛异常
③找到多个时,先根据变量名作为id进行寻找,匹配到了,装配,没有匹配到,可以使用@Qualifier(“book1”)指定bean的新id。
但是如果还是找不到,程序还是会报错,那么怎么让它找不到就null结束那?
使用@Autowired的required=false属性
@Autowired和@Resource的区别
二者都可以实现自动装配,@Autowired是spring规定的,@Resource是j2ee 也就是java规定的,@Autowired功能最强大。具体的有:
@Resource的扩展性更强,可以使用在不同的容器框架中,而@Autowired只能在spring中。
四、总结
IOC是一个容器,帮我们管理所有的组件:
(1)依赖注入 @Autowired 自动赋值
(2)某个组件要是用Spring提供的更多(IOC、AOP)必须加入到容器中。
(3)容器启动时,创建所有的单实例bean
(4)@Autowired自动装配的时候,是从容器中找这些符合要求的bean
(5)ioc.getBean(“id名”)也是从容器中找到这个bean
(6)从Spring源码中可以看出容器本质就是一个map,这个map保存了所有创建好的bean。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值