耦合:一个类中使用另一个类,当这个类不使用,对应的类代表必须改动
javaBean:用java语言编写可重复组建。
1. 需要一个配置文件来配置service和dao【配置内容 标识=类名称 key=value】
2. 通过读取配置文件内容反射创建对象【配置文件可用xml或properties】
IOC:解决程序的耦合
环境搭建:maven环境下,导入依赖架包,建立配置文件xml,设置管理对象
在表现层创建核心容器(classpathxmlapplicationcontest),获取对象,
ApplicationContext三个常用实现类;、
ClassPathXMLApplicationContext:加载类路径下的配置文件
FileSystemXMLApplicationContext:可用从磁盘加载文件
AnnotationConfigApplicationContext:注解
beanFactory:多例对象:
ApplicationContext:单例对象(在配置文件可以设置(默认)单例或多例):伴随对象
创建3中方式:默认无参数
默认方法,直接创建实现类对象
<bean id="实现类名称" class="cn.itcast.dao.实现类路径"></bean>
[实现类名称]这个名写在ClassPathXMLApplicationContext()中;
普通工厂创建;在一个类中某个方法,该方法中创建实现类对象
<bean id="该工厂名称" class="该工厂的类路径"></bean>
<bean id="方法中实现类的名称" factory-bean="该工厂名称" factory-method="该工厂类中的方法"></bean>
静态工厂创建,该工厂的静态方法中,创建实现类对象
<bean id="实现类名称" class="该工厂的类路径" factory-method="方法名"></bean>
DI依赖注入
在bean.xml中: [set注入]使用标签property
<bean id="serviveImpl" class="cn.itcast.service.serviceImpl" >id 最好写上接口的名称
<property name="daoimpl" ref="daoImpl"></property>
name的值一定要和【Set方法名称】一致!!!!
</bean>
<bean id="daoImpl" class="cn.itcast.dao.daoImpl"></bean>
在service中
pulic class ServiceImpl{
private Dao daoimpl;
设置上daoimpl的set方法
public void method(){
daoimpl.demo();
}
}
构造注入
在实现类中创建一个有参构造(全参):经常变换的数据,就不适合了
在配置文件bean。xml中:使用标签:constructor-arg
<baen id="serviceimpl" class="cn.itcast.">
<constructor-arg name="" value=""></constructor-arg>
<constructor-arg name="" value=""></constructor-arg>
<constrcotor-arg name="birthday" ref="XX"></constrcotor-arg>
。。。 。。。ref引用对象
</baen>
<baen id="XX" class="java.util.Date"></baen>
在注入数据(获取bean对象)时,注入数据必须全部赋值,否则无法成功;但是:改变了bean对象的实例化方式,即便不用,也必须创建;
|
|