Java基础_Spring三种构造方法
第一种构造方法
接口:FirstDao
package com.leehl.springgitider.dao; public interface FirstDao { public void save(); }
主方法:FirstDaoimpl
package com.leehl.springgitider.factory; import com.leehl.springgitider.dao.FirstDao; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class AppFirstDao { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); FirstDao firstDao = (FirstDao) ctx.getBean("FirstDao"); firstDao.save(); } }
提供的构造方法: AppFirstDao 继承接口 注意里面的写法用到的Spring容器构造
package com.leehl.springgitider.dao.impl;
import com.leehl.springgitider.dao.FirstDao;
public class FirstDaoimpl implements FirstDao {
// public FirstDaoimpl() { 构造方法
// }
private FirstDaoimpl() { //Spring一样可以用
}
@Override
public void save() {
System.out.println("第一种构造方法");
}
}
Spirng XML配置文件:
<!--第一种构造方法-->
<bean id="FirstDao" class="com.leehl.springgitider.dao.impl.FirstDaoimpl" />
注意的点:
在FirstDaoimpl文件中将构造器私有化,Spring一样可以运行它的无参构造器。

spring在构造bean的时候调用的是无参构造,如果在提供的构造方法中的无参构造器中加入传入参数就会报错实例化失败
无参构造方法如果不存在,将抛出BeanCreationException异常
第二种构造方法
生成一个静态方法设置为静态工厂

在主方法中直接调用静态方法生成一个bean对象
配置文件:
<bean id="SecondDao" class="com.leehl.springgitider.dao.impl.SecondDaoimpl" factory-method="路径"/>
第三种构造方法
<bean id="FirstDao" class="com.leehl.springgitider.dao.impl.FirstDaoimpl" />
<bean id="ThirdDao" class="com.leehl.springgitider.dao.impl.SecondDaoimpl" factory-method="工厂的方法" factory-bean="FirstDao"/>

浙公网安备 33010602011771号