Spring bean管理器 bean实例化的三种方式
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实例化的三种方式的更多相关文章
- 【Spring】的【bean】管理(XML配置文件)【Bean实例化的三种方式】
Bean实例化的三种方式 说明:通过配置文件创建对象就称为Bean实例化. 第一种:使用类的无参构造创建(重点) 实体类 package com.tyzr.ioc; public class User ...
- Spring中bean实例化的三种方式
之前我已经有好几篇博客介绍Spring框架了,不过当时我们都是使用注解来完成注入的,具体小伙伴可以参考这几篇博客(Spring&SpringMVC框架案例).那么今天我想来说说如何通过xml配 ...
- Spring的依赖注入(DI)三种方式
Spring依赖注入(DI)的三种方式,分别为: 1. 接口注入 2. Setter方法注入 3. 构造方法注入 下面介绍一下这三种依赖注入在Spring中是怎么样实现的. 首先我们需要以下几个 ...
- spring学习(03)之bean实例化的三种方式
bean实体例化的三种方式 在spring中有三中实例化bean的方式: 一.使用构造器实例化:(通常使用的一个方法,重点) 二.使用静态工厂方法实例化: 三.使用实例化工厂方法实例化 第一种.使用构 ...
- Spring实现初始化和销毁bean之前进行的操作,三种方式
关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 第二 ...
- Bean实例化的三种方式
1. 构造器实例化 spring容器通过bean对应的默认的构造函数来实例化bean. 2. 静态工厂方式实例化 首先创建一个静态工厂类,在类中定义一个静态方法创建实例. 静态工厂类及静态方法: pu ...
- Spring AOP编程(二)-AOP实现的三种方式
AOP的实现有三种方式: l aop底层将采用代理机制进行实现. l 接口 + 实现类 :spring采用 jdk 的动态代理Proxy. l 实现类: ...
- 【spring】 SpringMVC返回json数据的三种方式
配置方法一 **1.导入第三方的jackson包,jackson-mapper-asl-1.9.7.jar和jackson-core-asl-1.9.7.jar. 2.spring配置文件添加** & ...
- Spring配置文件-Bean实例化的三种方式
1.无参构造方法实例化(详见我的博客) 2.工厂静态方法实例化 创建StaticFactory类 public class StaticFactory { public static UserDao ...
随机推荐
- html5的canvas方法的总结
canvas的方法 save()保存当前环境的状态 restore() 返回之前保存过的路径状态和属性 createEvent() getContext()返回一个对象,指出访问绘图功能必要的API ...
- 【UVA】12100 Printer Queue(STL队列&优先队列)
题目 题目 分析 练习STL 代码 #include <bits/stdc++.h> using namespace std; int main() { int t; sc ...
- 【转】几款移动跨平台App开发框架比较
原文地址:https://www.cnblogs.com/songxingzheng/p/6482697.html 整理目前流行的跨平台WebApp开发技术的特点,仅供参考. 每个框架几乎都包含以下特 ...
- php中$_POST接收不到参数问题
问题描述:PHP可以接收_GET._SERVER._COOKIE等参数,php://input可以读取没有处理过的POST数据,独独_POST接收不到post参数. 原因: php://input可 ...
- rabbitMQ消息队列1
rabbitmq 消息队列 解耦 异步 优点:解决排队问题 缺点: 不能保证任务被及时的执行 应用场景:去哪儿, 同步 优点:保证任务被及时的执行 缺点:排队问题 大并发 Web nginx 1000 ...
- python学习——练习题(6)
""" 题目:斐波那契数列. 程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21 ...
- 关于电机驱动扩展板 L293D 马达板Arduino
注意端口3,4,5,6,7,8,9,10,11,12会被占用(板子上的pin口). 通过 MS_DCMotor motor(4); 中的4指的是4号电机,同理还有1-3号电机.不是pin口 舵机用 ...
- 禁止xfce4黑屏
我在ubuntu server上安装了xfce,可是每隔十分钟电脑就会黑屏.安装了xfce自带的电源管理程序.貌似不起作用.后来从网上找到如下方法: 修改/etc/X11/xorg.conf配置文件, ...
- No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer解决方法
org.codehaus.jackson.map.JsonMappingException: No serializer found for class org.hibernate.proxy.poj ...
- (转)C#命名规范
C#命名规范 数据类型 数据类型简写 标准命名举例 Array arr arrShoppingList Boolean bln blnIsPostB ...