可以理解为它是一个管理对象的创建,依赖,销毁的容器
一个demo,如果对于同一个实体,有多个不同数据库的dao类
DAO--------->Service------>Controller.
DAO: 专门与数据库交互.
MySqlDao。 Mysql数据库交互
OraclaDao. Oracle数据库。
Service:
//MysqlDao mdao=new MysqlDao(); //硬编码。扩展性不好。
OracleDao odao=new OracleDao(); //如何解决。
左边代码可以通过接口声明,右边直接创建对象不合适
spring框架可以解决这个问题:控制反转技术(IOC)
只在这个类创建私有的对象声明,而对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。
spring创建的步骤
1.加入jar包
2.创建配置文件 applicationContext.xml,头标签与springmvc配置文件一样
<!-- 。管理类:类的创建以及属性的注入 bean:表示管理的类标签 class:具体的类 id:标注该标签 property中 如果属性为:Sting及基本类型或包装类,用value 如果属性为:其他对线,用ref --> <bean id="mysql" class="com.zhiyou100.cyf.dao.MysqlUserDao"/> <bean id="oracle" class="com.zhiyou100.cyf.dao.OracleUserDao"/> <bean id="s" class="com.zhiyou100.cyf.service.Service"> <property name="mdao" ref="mysql"></property> </bean>
这里mdao就是service中的私有dao对象,通过修改ref属性来更换对象的引用
//。加载spring配置文件 ApplicationContext app=new ClassPathXmlApplicationContext("/applicationContext.xml"); //。获取指定的类对象 Service s=(Service)app.getBean("s");//这里相当于创建了MysqlUserDao对象