Spring中管理Bean的三种方法

 一.默认的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>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值