IoC和DI一样 控制反转和依赖注入一样
写代码原则是关闭原则,一般不修改但可以扩展
建资源文件 ***.properties
以下代码通过工厂实现 工厂也是一个方法 在工厂中可以进行事务控制
Spring的工厂通过拦截对象可以实现面向切面编程(AOP)
ResourceBundle bundle = ResourceBundle.getBundle("message");//资源文件的名字
String c = bundle.getString("1"); //通过key值在资源文件中获取类的路径
Class.ForName(c).newInstance(); //创建相应的类对象
所有的类继承同一个接口
如果想用Spring考以下文件:
Spring_3.2
必须要的包: core beans asm(动态生成类) expression context (不需要javadoc文档 /source 源码)
Spring 依赖包
必须要的包:commons-logging.jar
一 set注入
类的属性必须有set方法
用Spring的工厂创建产品需做两件事:
1 写工厂的配置文件 创建XML applicationContext.xml 应用上下文的配置
<beans>
</beans>
2 创建Spring Bean 工厂
BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");//可以使用通配符
IMessage msg = (强转)factory.getBean("a1"); //通过配置文件的Bean Id 创建
上下文的配置功能很强大
通过Set方法依赖注入 通过property属性 的name = "类的属性"注入到对应的属性
通过应用属性 ref = "对象的bean Id" 也可以通过value赋值
工厂创建对象两种模式:
单例和多例
bean 属性 scope = "prototype" 多例 \"singleton"单例
单例对象创建多例时,必须通过工厂来处理 不过一般不这样处理,工厂消耗的资源太大
单例里边获取多例的实现方法
类通过实现接口 BeanFactoryAware 有setBeanFactory(BeanFactory factory);方法 用于给BeanFactory赋值
注意空指针的情况
ref 应用对象 的bean属性和local属性 有多个配置文件的情况 用bean二不用指本地的local
bean 用name 和id都可以注入 name更加强大
二 属性注入
也必须有set方法
property 属性注入
集合注入 props