文档章节

Spring4-容器3-实例化bean

王胜_淡如止水
 王胜_淡如止水
发布于 2017/03/24 14:05
字数 514
阅读 9
收藏 1

1 简介

    实例化bean有三种方式:

(1)通过构造函数实例化

(2)使用静态工厂方法实例化

(3)使用实例工厂方法实例化

2 通过构造函数实例化

2.1 准备bean-User类

package com.ws.edu.spring;

public class User {
	private int id;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public User() {
		super();
	}
	public User(int id, String name) {
		super();
		this.id = id;
		this.name = name;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + "]";
	}
}

2.2 配置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="user" class="com.ws.edu.spring.User" />
</beans>

2.3 配置启动类

package com.ws.edu.spring;

import org.springframework.context.support.ClassPathXmlApplicationContext;


public class App {
	@SuppressWarnings("resource")
	public static void main(String[] args) {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
		System.out.println(context.getBean("user",User.class));
	}
}

2.4 输出结果

3 使用静态工厂方法实例化

3.1 准备bean-User1类

package com.ws.edu.spring;

public class User1 {
	private int id;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	private User1() {
		super();
	}
	private static User1 user1 = new User1();
	public static User1 getInstance(){
		return user1;
	}
	@Override
	public String toString() {
		return "User1 [id=" + id + ", name=" + name + "]";
	}
}

3.2 配置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="user" class="com.ws.edu.spring.User" />
	<bean id="user1" class="com.ws.edu.spring.User1" factory-method="getInstance"/>
</beans>

3.3 修改启动类

package com.ws.edu.spring;

import org.springframework.context.support.ClassPathXmlApplicationContext;


public class App {
	@SuppressWarnings("resource")
	public static void main(String[] args) {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
		System.out.println(context.getBean("user",User.class));
		System.out.println(context.getBean("user1",User1.class));
	}
}

3.4 输出结果

4 使用实例工厂方法实例化

4.1 准备bean-User类

同2.1

4.2 准备实例工厂类

package com.ws.edu.spring;

public class UserFactory {
	private User user = new User();
	public User getUserInstance(){
		return user;
	}
}

4.3 配置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="user" class="com.ws.edu.spring.User" />
	<bean id="user1" class="com.ws.edu.spring.User1" factory-method="getInstance"/>
	<bean id="userFactory" class="com.ws.edu.spring.UserFactory"/>
	<bean id="user2" class="com.ws.edu.spring.User" factory-bean="userFactory" factory-method="getUserInstance"/>
</beans>

4.4 配置启动类

package com.ws.edu.spring;

import org.springframework.context.support.ClassPathXmlApplicationContext;


public class App {
	@SuppressWarnings("resource")
	public static void main(String[] args) {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
		System.out.println(context.getBean("user",User.class));
		System.out.println(context.getBean("user1",User1.class));
		System.out.println(context.getBean("user2",User.class));
	}
}

4.5 输出结果

© 著作权归作者所有

王胜_淡如止水
粉丝 4
博文 52
码字总数 81235
作品 0
杭州
私信 提问
说说在 Spring 中如何基于 Java 类进行配置

JavaConfig 原来是 Spring 的一个子项目,它通过 Java 类的方式提供 Bean 的定义信息,在 Spring4 的版本, JavaConfig 已正式成为 Spring4 的核心功能 。 1 定义 Bean 普通的 POJO 只要标注...

deniro
2018/05/11
0
0
SSH框架之Spring4专题2:Spring与loC

控制反转(loC,Inversion of Control),是一个概念,是一种思想。指的是将传统上由程序代码直接操纵的对象调用权交给容器,通过容器来实现对象的装配和管理。控制反转就是对对象控制权的转...

糖醋白糖
2018/06/26
0
0
ImportSelector与DeferredImportSelector的区别(spring4)

版权声明:欢迎转载,请注明出处,谢谢。 https://blog.csdn.net/boling_cavalry/article/details/82555352 在使用@Import注解来注册bean的时候,Import注解的值可以是ImportSelector或者Def...

博陵精骑
2018/09/09
0
0
spring --(1)入门

spring4.x中文文档 http://spring.cndocs.tk/index.html 开涛的spring4.1介绍 http://jinnianshilongnian.iteye.com/blog/2102278 spring4框架参考手册 http://www.open-open.com/doc/view/......

求是科技
2016/07/17
56
0
向Spring大佬低头——大量源码流出解析

用Spring框架做了几年的开发,只停留在会用的阶段上,然而Spring的设计思想和原理确实一个巨大的宝库。大部分人仅仅知道怎么去配,或着加上什么属性就能达到什么效果,这些东西都可以通过查文...

Java团长17
2018/07/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何标记电话号码?

我想在HTML文档中将电话号码标记为可调用链接。 我已经阅读了微格式方法 ,我知道, tel:方案将是标准的,但实际上没有实现。 据我所知,Skype定义了skype:和callto: ,后者已经获得了一些人气...

javail
4分钟前
14
0
单击手机网页中的链接时如何触发电话

我需要为移动设备构建一个网页。 只有一件事我还没弄明白:如何通过点击文字来触发电话? 是否有一个特殊的URL我可以输入,如mailto:标签的电子邮件? 设备特定解决方案不是优选的。 我知道i...

技术盛宴
19分钟前
33
0
[读书笔记] 大型网站性能优化实战-服务端性能优化

1 QPS (吞吐量) 1.1 RT (Response Time,响应时间) 服务器端 RT+网络开销 ≈ 客户端 RT。对于网络来讲,常见的优化方式有 CDN、 AND和专线, 分别适用于不同的场景。 服务器端 RT = Thread ...

QingHuo
38分钟前
21
0
concurrently 启动多个serve时命令行输出混乱

在script中配置中加入参数 -r "start": "npx concurrently -r \"npm:serve\" \"npm:web\"" 输出比较整洁 输出混乱, 会将有用的信息冲掉...

阿豪boy
今天
48
0
每天AC系列(三):电话号码的字母组合

1 题目 Leetcode第17题。 数字2-9映射字母,给出一个包含字符串的数字,列出字母的所有组合。 2 递归 拿到这样的题目想到了递归实现,创建一个Map映射对应的字母,然后把它传给递归函数,同时...

Blueeeeeee
今天
44
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部