Spring小记(一)

学习Spring框架已有1个月,实习做得最多的就是把Spring啃了下来,还是很开心。相信每个敲代码的孩纸都是折翼的天使,因为善良和坚持,终会有所收获。

Spring平台实在大,最主要部分可以分为:IoCAOP、组件。组件又包括流行一时的Spring MVCSpring BootSpring JDBC等等,包罗万象。


(一) IOC:控制反转与注入依赖相信很多人都会被这个搞晕掉。其实都是指IOC容器,不过是概念上各有侧重。举个例子,以往在Serivice层中调用Dao层,我们用代码控制:XXDao dao=new XXDao();Spring中,我们把创建交给了IOC容器解决,只需要:@Autowired XXDao dao;把代码控制的部分交给IOC容器管理 ,这就是控制反转。那么注入依赖呢?刚提到,@Autowired就是自动注入依赖标签。容器在管理过程中,就替代我们完成把XXDao导入的工作,这就是注入依赖。

1IOC容器框架:

最基本的IOC容器就是BeanFactory。万物不离其宗,所有的IOC容器都是继承这个接口去实现。IOC容器的核心两者是BeanFactoryApplicationContext。后者是在前者的基础上,继承了Resource等一系列高大上组件从而丰富了IOC容器。所以说,最基本的是BeanFactory,可是最常用的莫过于ApplicationContext。当然,还有许许多多的容器,如下图:

 

2IOC容器中Bean生命周期:

(1) Bean实例创建;

(2) 为Bean实例设置属性;

(3) 调用Bean的初始化方法;

(4) 应用可通过IOC容器使用Bean

(5) 当容器关闭时,调用Bean销毁方法;

3、 IOC容器管理Bean4个工序:寻找Bean定义资源、载入和注册、注入依赖。前三者在IOC容器初始化中完成,注入依赖就具有不确定性。当预实例化时也在初始化中。准确地定义应该是,注入依赖发生在用户第一次向IOC容器索要Bean时触发,getBean方法是其入口函数。

(1) 定义资源。Spring有容乃大,无论你是ClathFile,还是XML还是外部资源 ,都是允许的。一开始接触Bean配置文件时,十分地艰辛~仿造网上的教程写了无数个,最后还是提示找不到配置文件,愁煞我也。后面坑走得多了,就有经验了。注意点如下:①默认文件名。什么是默认文件名呢?Spring配置文件默认为applicationContext.xml据了解。你可以有很多个配置文件,但要乖乖地import到一个文件中提供给程序。当然名字可更改,如图所示:

<Context-param>
	<context-param>
		<param-name>自定义名称</param-name>
	</context-param>
</Context-param>

②路径,默认路径在ClathPath:下,不要担心,你是可以配置路径的。在自定义名称标签下再添加一段<param-value>自定义路径</param-value>.

③导入包。有时候什么都没问题,还是出错时,说不定就是导入包不对。比如,Spring框架中包有很多,core/aop啊什么的。不同的包各有侧重,具体见官方文档描述。当所需要的类刚好没导入时,问题就会出现。所以,耐心地看出错清单,提示还是很清楚的 ,导入相应的包问题就解决了。

(2) 载入资源。给了Bean定义文档,容器会去分析结构,然后呢?然后就是把信息转化成容器内部数据结构。这个说起来很抽象,其实不过就是转出POJO便于后续处理。

(3) 注册。注册过程就是将载入中转化成的内部数据结构映射到HASHMAP中。没错,Spring最基本的注册工具就是MapKeyBean名字,值就是内部数据结构。

(4) 注入依赖。这个说起来就大了呢。Bean依赖关系管理主要分为3种注入模式:自动注入@Autowired,构造函数、BeanDefinition的属性值。粗略而言,容器检测是否有索要Bean,检测到后调用getBean将其载入进来。

4、 最基本的IOC容器的使用过程

贴一段我的简单运用:

 

 ClassPathResource resource=new ClassPathResource("applicationContext.xml");//定义BeanDefinition信息
        DefaultListableBeanFactory beanFactory=new DefaultListableBeanFactory();//创建IOC容器
        XmlBeanDefinitionReader reader=new XmlBeanDefinitionReader(beanFactory);//创建IOC容器的BeanDefinition阅读器
        reader.loadBeanDefinitions(resource);//导入资源,IOC容器回调创建bean
        CommonEmployee bean=(CommonEmployee)beanFactory.getBean("targetbean");
        bean.setName("wang");
        System.out.print("OK"+bean.getName());

不得吧说IoC容器博大精深,三眼两语并不能真正阐述清楚。以上只是入门见解,而更多的知识与思想都只能通过看源码和官方文档进行补充。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值