设为首页 加入收藏

TOP

Spring之Core模块
2015-04-07 15:30:35 来源: 作者: 【 】 浏览:50
Tags:Spring Core 模块

Core模块主要的功能是实现了控制反转与依赖注入、Bean配置以及加载。Core模块中有Beans、BeanFactory、BeanDefinitions、ApplicationContext等概念


BeanFactory是实例化、配置、管理众多bean的容器


在Web程序中用户不需要实例化Beanfactory,Web程序加载的时候会自动实例化BeanFactory,并加载所欲的Beans,将各个Bean设置到Servlet、Struts的Action中或者Hibernate资源中


在Java桌面程序中,需要从BeanFactory中获取Bean,因此需要实例化BeanFactory,例如,加载ClassPath下的配置文件:


ClassPathResource? res = new ClassPathResource("applicationContext.xml");
XmlBeanFactory? factory = new XmlBeanFactory? (res);
Iservice service= factory.getBean("service");
……
factory.destroySingletons();


或者使用文件流加载任意位置的配置文件


InputStream? in = new FileInputStream("C:\\ApplicationContext.xml");
XmlBeanFactory? factory = new XmlBeanFactory? (in);


或者用ClassPathXmlApplicationContext加载多个配置文件(以字符串形式传入)


ClassPathXmlApplicationContext? appContext = new ClassPathXmlApplicationContext(
new String [] {"applicationContext.xml","applicationContext-part2.xml"}
);
?
BeanFactory factory = (BeanFactory) appContext;
//ApplicationContext继承自BeanFactory接口


--------------------------------------分割线 --------------------------------------


--------------------------------------分割线 --------------------------------------


工厂模式


如果一个bean不能通过new直接实例化,而是通过工厂类的某个方法创建的,需要把的class属性配置为工厂类(或者吧factory-bean属性配置为工厂类对象)





构造函数


如果Bean的构造函数带有参数,需要指定构造函数的参数



? ? ?
? ? ?
? ? ? 1


参数又先后顺序,要与构造函数参数的顺序相同?


单态模式


Bean可以定义是否为单态模式,在非单态模式下,每次请求该Bean都会生成一个新的对象


像数据源等一般配置为单态模式



property属性


destroy-method属性配置关闭方法,如果有配置,在丢弃Java对象时会调用该方法,某些数据源、SessionFactory对象都需要用destroy-method配置关闭方法



等价于



? ? ? pValue


注意:



? ? ?


会将password设置为"",而不是null,如果想设置为null应该为



? ? ?


属性


Spring配置文件的Bean之间可以相互引用,引用时用标签配合Bean的id属性使用


也可以使用内部配置




? ? ?
? ? ? ? ? ?
? ? ?


等价于内部配置



? ? ?


除了使用的bean属性,还可以使用local、parent,它们与bean属性的作用是一样的,但是,local只能使用本配置文件中的bean,parent只能使用父配置文件中的bean?


属性



? ? ?
? ? ? ? ? ? String、Integer、Double等类型数据
? ? ? ? ? ?
? ? ?


属性



? ? ?
? ? ? ? ? ? String、Integer、Double等类型数据
? ? ? ? ? ?
? ? ?


属性



? ? ?
? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? String、Integer、Double等类型数据
? ? ? ? ? ?

? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ?

? ? ?


属性



? ? ?
? ? ? ? ? ? http://localhost:8080/clf
? ? ? ? ? ? clf
? ? ?


属性



……


Spring在注销这些资源时会调用close方法?


有些对象在实例化之后需要执行某些初始化代码,但是这些代码不能写进构造函数,这时候可以把初始化代码写进某个方法中,并用指定该方法



depends-on属性


Spring会默认按照配置文件里的Bean顺序地实例化Bean,但是有时候实例化A对象之前需要先实例化后面的B对象,这时候可以使用depends-on属性强制先实例化B对象




】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Spring之AOP模块 下一篇RPC原理详解

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: