Spring 实例化bean的三种方式:
方法一:使用构造器实例化bean
java代码:
package com.model;
public class User {
private String username;
public User(){
}
public User(String username){
this.setUsername(username);
}
public void sayHello(){
System.out.println("hello ");
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
配置文件:
<!--方法一:使用构造器实例化bean -->
<bean id="user" class="com.model.User"></bean>
测试代码:
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
//方法一:使用构造器实例化bean
User user = (User)applicationContext.getBean("user");
user.sayHello();
方法二:使用静态工厂方法实例化bean
java代码:
package com.test;
public class StaticFactory {
private static StaticFactory staticFactory = new StaticFactory();
public static StaticFactory getBean() {
return staticFactory;
}
public void say() {
System.out.println("new Instance!");
}
}
配置文件:
<!--方法二:使用静态工厂方法实例化bean -->
<bean id="staticFactory" class="com.test.StaticFactory" factory-method="getBean"/>
测试代码:
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
//方法二:使用静态工厂方法实例化bean
StaticFactory staticFactory = (StaticFactory)applicationContext.getBean("staticFactory");
staticFactory.say();
方法三:使用实例工厂方法实例化bean
java代码:
package com.test; import com.dao.UserDao;
import com.dao.impl.UserDaoImpl; public class InstanceBean {
private static UserDao userDaoA = new UserDaoImpl(); //该方法必须是非静态的
public UserDao getBeanInstance() {
return userDaoA;
} }
接口UserDao:
package com.dao; import com.model.User; public interface UserDao {
public void add(User user);
public void findByid(String id);
} 实现类UserDaoImpl:
package com.dao.impl; import com.dao.UserDao;
import com.model.User; public class UserDaoImpl implements UserDao { private String hello;
@Override
public void add(User user) {
System.out.println("方法三:qwqwqwq!!!");
} @Override
public void findByid(String id) { } public String getHello() {
return hello;
} public void setHello(String hello) {
this.hello = hello;
} }
配置文件:
<!--方法三:使用实例工厂方法实例化bean -->
<bean id="instanceBean" class="com.test.InstanceBean"/>
<bean id="userDaoA" factory-bean="instanceBean" factory-method="getBeanInstance"></bean>
测试代码:
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
//方法三:使用实例工厂方法实例化bean
UserDao userDao = (UserDao)applicationContext.getBean("userDao");
String username = "pppp";
userDao.add(new User(username));
Spring 实例化bean的三种方式:的更多相关文章
- Spring实例化Bean的三种方式及Bean的类型
1.使用类构造器实例化 [默认的类构造器] <bean id=“orderService" class="cn.itcast.OrderServiceBean"/ ...
- Spring 实例化bean的三种方式
第一种方法:直接配置Bean <bena id="所需要实例化的一个实例名称" class="包名.类名"/> 例如: 配置文件中的bean.XML ...
- spring实例化bean的三种方式
公共使用的实体
- Spring学习之实例化bean的三种方式
实例化bean的三种方式 构造器实例化bean Person.java public class Person { private String name; private Integer age; ...
- spring创建bean的三种方式
spring创建bean的三种方式: 1通过构造方法创建bean(最常用) 1.1 spring默认会通过无参构造方法来创建bean,如果xml文件是这样配置,则实体类中必须要有无参构造方法,无参构造 ...
- Spring装配Bean的三种方式+导入和混合配置
目录 Spring IoC与bean 基于XML的显式装配 xml配置的基本结构 bean实例的三种创建方式 依赖注入的两种方式 构造器注入方式 setter方法注入方式 利用命名空间简化xml 基于 ...
- spring 装配bean的三种方式
这段时间在学习Spring,依赖注入DI和面向切面编程AOP是Spring框架最核心的部分.这次主要是总结依赖注入的bean的装配方式. 什么是依赖注入呢?也可以称为控制反转,简单的来说,一般完成稍微 ...
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring实例化Bean的三种方法
在面向对象的程序中,要想调用某个类的成员方法,就需要先实例化该类的对象.在 Spring 中,实例化 Bean 有三种方式,分别是构造器实例化.静态工厂方式实例化和实例工厂方式实例化. 构造器实例化 ...
- Spring实例化bean的几种方式
一,通过constructor实例化bean Spring可以实例化各种类型的类,不要求必须是JavaBean类型的类.在XML中配置类如下: <bean id="exampleBea ...
随机推荐
- js-常用数组方法总结
[前面的话]说数组“万能”,可能夸张了一点,但是就个人观点,数组的运用是非常广泛的,这里的广泛当然也包含了在其他语言中的运用.举例说明,在javascript当中,由于字符串的不可变性,在进行字符串拼 ...
- AOV网
1.定义 用顶点表示活动,用有向边<Vi, Vj>表示活动间的优先关系. Vi必须先于活动Vj进行. 这种有向图叫做顶点表示活动的AOV网络(Activity On Vertices) 2 ...
- Integer.valueOf(int)及自动装箱内幕
Integer为什么要提供功能与new Integer(xx)一样的valueOf(xx)方法呢,看了源代码之后,我发现了惊人的内幕. public static Integer valueOf(in ...
- 引用头文件顺序问题 error C2039
建的WTL工程,用到CString和DataExchange 因为WTL和ATL都有对CString的定义 当先包含 atlstr.h 再包含 atlddx.h 时会出现以下错误 error C203 ...
- Xcode8中添加SnapKit框架报错,编译失败
既然SnapKit的作者说SnapKit已经支持Swift3.0了,那么我们就先来适配SnapKit,首先用Xcode8新建一个空项目,利用Cocoapods导入SnapKit. Podfile 打 ...
- (╭ ̄3 ̄)╭ 小希的迷宫II
(╭ ̄3 ̄)╭ 小希的迷宫II TimeLimit: 2000/1000 MS (Java/Others) MenoryLimit: 65536/32768 K (Java/Others) 64-b ...
- docker中管理数据
到目前我们介绍了一些Docker的基础概念, 知道了如何使用Docker的image, 也知道了如何在多个container间通过网络通讯. 在这章里我们将介绍如何在docker的container内 ...
- 实现ie6下的居中
代码如下所示,转自 http://w3help.org/zh-cn/causes/RT8003 对于 text-align 的讨论. <div style="width:200px; ...
- 存储过程sql语句
select count(virtualacc) into v_count from T_ATMMONITOR WHERE virtualacc = v_number; 用于存储过程中,是把coun ...
- HDU 5918 SequenceI (2016 CCPC长春站 KMP模版变形)
这个题目的数据应该是比较弱的,赛场上的时候我们暴力也过了,而且我的kmp居然比暴力还要慢-- 这个变形并不难,跳着选数,把漏掉的位置补上就可以了. 代码如下: #include<iostream ...