码迷,mamicode.com
首页 > 编程语言 > 详细

Spring bean管理器 bean实例化的三种方式

时间:2018-02-28 01:15:52      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:pack   创建对象   对象   必须   classpath   static   style   schema   span   

bean实例化的三种方式实现

第一种:使用类的无参数构造方法创建(常用 重要)

     第一种实例化方式最常用,实例化类时会通过调用无参构造方法创建。示例代码如下:

package spring.com.UserService;

public class UserService {
	
	public UserService() {
		//该方法是无参方法
	}

	public void AddUser(){
		System.out.println("Add.........................");
	}
}

 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" xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
	<bean id="userService" class="spring.com.UserService.UserService"></bean>
</beans>

 单元测试:

package spring.com.Test;

import static org.junit.Assert.*;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import spring.com.UserService.UserService;

public class Test {

	@org.junit.Test
	public void test() {
		ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
		UserService s=(UserService) context.getBean("userService");
		s.AddUser();
	}

}

  结果:

技术分享图片

方法正常执行

如果手动添加一个有参构造方法时,那么创建时会找不到无参构造方法;示例代码:

package spring.com.UserService;

public class UserService {
	
	public UserService(String name) {
		//该方法是有参方法
	}

	public void AddUser(){
		System.out.println("Add.........................");
	}
}

  结果:

技术分享图片

找不到无参构造方法,所以无法实例化。必须手动添加无参构造方法

package spring.com.UserService;

public class UserService {
	public UserService() {
		//该方法是无参方法
	}
	public UserService(String name) {
		//该方法是有参方法
	}

	public void AddUser(){
		System.out.println("Add.........................");
	}
}

  

第二种:使用静态工厂创建(知道即可)

      示例代码:

创建一个工厂类,改工厂用来创建一个类的实例

package spring.com.UserService;

public class BeanFactory {
	public static UserService getBeanFactory(){
		return new UserService();
	}
}

 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" xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
	<bean id="factory" class="spring.com.UserService.BeanFactory" factory-method="getBeanFactory"></bean><!--创建工厂创建对象-->
</beans>

  

单元测试:

package spring.com.Test;

import static org.junit.Assert.*;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import spring.com.UserService.BeanFactory;
import spring.com.UserService.UserService;

public class Test {

	@org.junit.Test
	public void test() {
		ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
		UserService s=(UserService) context.getBean("factory");
		s.AddUser();
	}

}

  

  结果:

技术分享图片

第三种:使用实例工厂创建(知道即可)

示例代码:

package spring.com.UserService;

public class BeanFactory {
	//普通工厂方法
	public UserService getBeanFactory(){
		return new UserService();
	}
}

  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" xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
	<bean id="bean" class="spring.com.UserService.BeanFactory"></bean>
	<bean id="factory" factory-bean="bean" factory-method="getBeanFactory"></bean>
</beans>

  单元测试:

package spring.com.Test;

import static org.junit.Assert.*;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import spring.com.UserService.BeanFactory;
import spring.com.UserService.UserService;

public class Test {

	@org.junit.Test
	public void test() {
		ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
		UserService s=(UserService) context.getBean("factory");
		s.AddUser();
	}

}

  结果:

技术分享图片

 

Spring bean管理器 bean实例化的三种方式

标签:pack   创建对象   对象   必须   classpath   static   style   schema   span   

原文地址:https://www.cnblogs.com/jiangxifanzhouyudu/p/8481347.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!