SpringBean的实例化
在Spring框架中,想使用Spring容器中的Bean,需要先实例化Bean
SpringBean的实例化有3种方式
构造方法实例化 (最常用)
在Java配置类中,写一个构造方法,在这个构造方法中new一个Bean实例,
然后在构造方法上添加注解@Bean(value="beanClass") ,这里的beanClass是Bean实例的名称,一般使用小驼峰命名。
示例代码
TestBean1.java
package cn.lzh.kam.pojo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class TestBean1 {
private String msg;
public TestBean1() {
this.msg = "测试-构造方法实例化bean";
}
public TestBean1(String msg) {
this.msg = msg;
}
}
JavaCfg.java
package cn.lzh.kam.cfg;
import cn.lzh.kam.pojo.TestBean1;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class JavaCfg {
@Bean(value = "testBean1")
public TestBean1 getTestBean1(){
return new TestBean1();
}
}
然后,业务代码中使用testBean1这个实例,2种方式
第一种,利用context.getBean
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(KamApplication.class, args);
TestBean1 testBean1 = (TestBean1) context.getBean("testBean1");
System.err.println(testBean1.getMsg());
}
第二种,利用注解注入实例
@Service
public class LoginService {
@Autowired
@Qualifier("testBean1")
private TestBean1 testBean1;
}
静态工厂实例化
新建一个静态工厂类,用于实例化上面的TestBean1.java 。
在这个静态工厂类中,要手动new一个Bean实例,然后用createInstance静态方法renturn出这个实例;
最后,在Java配置类中,写一个构造方法,在这个构造方法中调用刚刚的静态工厂的createInstance方法来返回Bean实例。
示例代码
BeanStaticFactory.java
package cn.lzh.kam.pojo;
public class BeanStaticFactory {
private static TestBean1 tb2 = new TestBean1("调用静态工厂来实例化Bean");
public static TestBean1 createInstance(){
return tb2;
}
}
JavaCfg.java
package cn.lzh.kam.cfg;
import cn.lzh.kam.pojo.BeanStaticFactory;
import cn.lzh.kam.pojo.TestBean1;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class JavaCfg {
@Bean(value = "tb2")
public TestBean1 getTb2(){
return BeanStaticFactory.createInstance();
}
}
实例工厂实例化
SpringBean的实例化的更多相关文章
- Spring---bean的实例化
Spring IoC容器如何实例化Bean呢?传统应用程序可以通过new和反射方式进行实例化Bean.而Spring IoC 容器则需要根据Bean定义里的配置元数据使用反射机制来创建Bean.在Sp ...
- 【转】Java方向如何准备BAT技术面试答案(汇总版)
原文地址:http://www.jianshu.com/p/1f1d3193d9e3 这个主题的内容之前分三个篇幅分享过,导致网络上传播的比较分散,所以本篇做了一个汇总,同时对部分内容及答案做了修改, ...
- 【转】Java方向如何准备技术面试答案(汇总版)
本文转载自:“Java团长”公众号 1.面向对象和面向过程的区别 面向过程优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开发.Linux/Unix等一般采 ...
- Java方向如何准备技术面试答案(汇总版)
本文转载自:"Java团长"公众号 1.面向对象和面向过程的区别 面向过程优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开发.Linu ...
- Java方向如何准备BAT技术面试答案(汇总版)
这个主题的内容之前分三个篇幅分享过,导致网络上传播的比较分散,所以本篇做了一个汇总,同时对部分内容及答案做了修改,欢迎朋友们吐槽.转发.因为篇幅长度和时间的原因,部分答案我没有亲自总结.更多精彩内容请 ...
- 【转载】Java方向如何准备BAT技术面试答案(汇总版)
作者:微信公众号JavaQ链接:https://www.nowcoder.com/discuss/31667?type=0&order=0&pos=11&page=1来源:牛客 ...
- java技术面试之面试题大全
转载自:http://blog.csdn.net/lijizhi19950123/article/details/77679489 Java 面试知识点总结 本篇文章会对面试中常遇到的Java技术点进 ...
- JAVA研发面试题
转自:http://www.jianshu.com/p/1f1d3193d9e3 Java基础的知识点推荐<Java编程思想>,JVM的推荐<深入理解Java虚拟机>,Spri ...
- spring-bean实例化三种方式
在spring中,bean的示例化有三种方式. 1.使用类的无参构造函数创建 2.使用静态工厂方式创建 3.使用实例化工厂方式创建. 具体代码如下 静态工厂方式: Bean2.java package ...
随机推荐
- ARM学习1
ARM相关概念 1.ARM的发展史 1. 1978年,CPU公司 Cambridge processing Unit 2. 1979年 Acorn 3. 1985年, 32位,8MHz, 使用的精简指 ...
- DOM树
一.DOM树一共有12种节点类型,常用的有4种: 1.Document类型(document节点)--DOM的"入口点" 2.Element节点(元素节点)--HTML标签,树构建 ...
- Redis - 读写模式 - 缓存一致性
Cache Aside Pattern(旁路缓存模式) 读:从cache中读取数据,若读取到则直接返回:cache中不存在则去database中读取,然后更新到cache. 写:先更新database ...
- Eureka高可用集群搭建
就是搭建Eureka的集群. 每个Eureka Server需要相互注册,确保数据一致. 我这里准备两个Eureka Server 他两的POM文件配置是一样的 <dependencies&g ...
- Linux挂载iso镜像、配置本地yum源
Linux挂载iso镜像.配置本地yum源 1.备份原yum源配置文件 [root@localhost ~]# ll /etc/yum.repos.d/ [root@localhost ~]# mkd ...
- 介绍一个好用的dao层与mybatis互跳的idea插件MyBatisCodeHelperPro
一次点击 File--> Settings --> Plugins -->搜索MyBatisCodeHelperPro,点击获取,重启idea即可 接下来看效果,点击小企鹅就可以相互 ...
- 上线项目之局域网上线软件使用-----phpStudy
上面的图片是phpStudy的软件截图.那么你在哪里会下到呢?链接: https://pan.baidu.com/s/1lvX9jY_K6gGkMOqo76p4nA 提取码: h1it 复制这段内容后 ...
- DBPack 赋能 python 微服务协调分布式事务
作者:朱晗 中国电子云 什么是分布式事务 事务处理几乎在每一个信息系统中都会涉及,它存在的意义是为了保证系统数据符合期望的,且相互关联的数据之间不会产生矛盾,即数据状态的一致性. 按照数据库的经典理论 ...
- 一个bug肝一周...忍不住提了issue
导航 Socket.IO是什么 Socket.IO的应用场景 为什么选socket.io-client-java 实战案例 参考 本文首发于智客工坊-<socket.io客户端向webserve ...
- 使用.NetCore自带的后台作业,出入队简单模拟生产者消费者处理请求响应的数据
环境:Core:3.1的项目 说明:由于该方案为个人测试项目,重启时队列中的部分数据很可能会丢失, 对数据有要求的该方案不适用,不能照搬需要持久化处理, 另外发布到Linux Docker中通常不会自 ...