一.默认的constructor(构造方法)
示例代码:
DAO中的代码(在Eclipse编译器中编译)
package com.phome.dao;
public class DAO {
//1.定义一个静态的当前类的实例对象
private static DAO dao=new DAO();
//2.创建方法私有化
private DAO(){
}
//创建一个提供外部获取当前对象的方法
public static DAO getDAO(){
System.out.println("getDAO方法执行。。。");
return dao;
}
//创建方法
public void add(){
System.out.println("dao的add方法被执行、、、");
}
}
service中的代码
package com.phome.service;
import com.pjome.dao.DAO;
public class Service(){
//定义一个私有的DAO
private DAO dao;
//set/get 方法
public DAO getDao(){
return dao;
}
public void setDao(DAO dao){
this.dao=dao;
}
public void regist(){
System.out.println("service 的regist方法开始执行");
dao.add();
System.out.println("service的register方法执行完成");
}
}
main中的代码:
package com.phome.main;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.phome.dao.DAO;
import com.phome.service.Service
public class Main{
public static void main(String args){
//获取ioc工厂
BeanFactory factory=new ClasspathXmlApplicationContext("spring.xml");
//从工厂中获取对应的id对象
Service service=()factory.getBean("service");
//执行对象的方法
service.regist();
}
}
xml文件的配置:
<?xml version="1.0" encoding="UTF-8"?>
1.先配置beans文件
2.bean中的属性配置()
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="dao" class="com.phome.dao.DAO" factory-method="getDAO"></bean>
<Bean id="service" class="com.phome.service.Service" scope="singleton">
<property name="dao" ref="dao"></property>
</bean>
</beans>
二.instancefactorymethod(实例化工厂的方法)
DAO中的方法
注意定义了一个DAOFactory类
package com.phome.dao;
public class DAOFactory {
private DAO dao = new DAO();
private DAOFactory() {
}
public DAO getDAO()
System.out.println("DAOFactory的getDAO方法执行了...");
return dao;
}
}
package com.phome.dao;
public class DAO {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void add() {
System.out.println(name + "的add方法在执行...");
}
}
service中的代码:
package com.phome.service;
import com.phome.dao.DAO;
public class Service {
private DAO dao;
public DAO getDao() {
return dao;
}
public void setDao(DAO dao) {
this.dao = dao;
}
public void regist() {
System.out.println("service 的regist方法开始执行...");
dao.add();
System.out.println("service的regist方法执行完成...");
}
}
main方法中同上
xml中的配置
?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="daofactory" class="com.phome.dao.DAOFactory"></bean>
<bean id="dao" factory-bean="daofactory" factory-method="getDAO">
</bean>
<bean id="service" class="com.phome.service.Service">
<property name="dao" ref="dao"></property>
</bean>
</beans>
三.staticfactorymeayhod(静态方法的)
package com.phome.dao;
public class DAO {
public DAO() {
}
public DAO(String name) {
this.name = name;
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void add() {
System.out.println(name + "的add方法在执行...");
}
}
package com.phome.dao;
public class DAO {
public DAO() {
}
public DAO(String name) {
this.name = name;
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void add() {
System.out.println(name + "的add方法在执行...");
}
}
package com.phome.main;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.phome.service.Service;
public class Main {
public static void main(String[] args) {
// 获取ioc容器工厂
BeanFactory factory = new ClassPathXmlApplicationContext("spring.xml");
// 从工厂中获取对应id名称的对象
Service service = (Service) factory.getBean("service");
// 执行对象的方法
service.regist();
}
}
xml文件配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 使用当前配置的话,调用的是class所指向类的默认的空的构造方法来实例化一个对象的;spring默认创建bean的方式 -->
<!--
<bean id="dao" class="com.phome.dao.DAO">
<property name="name" value="mysql"></property>
</bean>
-->
<bean id="dao" class="com.phome.dao.DAO">
<!-- 1. 根据参数的位置注入当前参数的值 -->
<!-- <constructor-arg index="0" value="mysqldependencyinjection"></constructor-arg> -->
<!-- 2. 根据参数的类型注入当前参数的值 -->
<constructor-arg type="java.lang.String" value="hello"></constructor-arg>
</bean>
<bean id="service" class="com.phome.service.Service">
<property name="dao" ref="dao"></property>
</bean>
</beans>