Spring装配bean(在java中进行显式配置)
1.简单介绍
Spring提供了三种装配机制:
1.在XML中进行显式配置;
2.在java中进行显式配置;
3.隐式的bean发现机制和自动装配。
其中,1和3项在项目中经常使用,而在java中进行显示配置方式很少使用。本文专门介绍第2种方式。
如果在项目中,我们需要将第三方库装配到spring中,这时候就没法使用隐式装配方式(没法在第三方库中加@Component等注解),这时候,
就需要在两种显式配置中选方法配置。
其中在java中进行显式配置方式是更好的方案,因为它更为强大、类型安全并且重构友好。并且当需要装配bean非常多的时候,放在xml配置文件
不方便管理,使用java配置只需把所有javaConfig放在一个包下,扫描这个包即可。
2.代码实现
1.applicationContext-service.xml 扫描JavaConfig包
<context:component-scan base-package="com.taozhiye.JavaConfig"></context:component-scan>
2.CDPlayer.java
package com.taozhiye.JavaConfigTemp; public interface CDPlayer { public void get(); }
3.SgtPeppers.java
package com.taozhiye.JavaConfigTemp; public class SgtPeppers implements CDPlayer {
@Override
public void get() {
System.out.println("SgtPeppers");
} }
4.WhiteAlbum.java
package com.taozhiye.JavaConfigTemp; public class WhiteAlbum implements CDPlayer { @Override
public void get() {
System.out.println("WhiteAlbum");
} }
5.JavaConfig.java 需要扫描本文件所在包
package com.taozhiye.JavaConfig; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import com.taozhiye.JavaConfigTemp.CDPlayer;
import com.taozhiye.JavaConfigTemp.SgtPeppers;
import com.taozhiye.JavaConfigTemp.WhiteAlbum; @Configuration
public class JavaConfig { @Bean(name = "CDPlayer")
public CDPlayer get(){
int choice = (int) Math.floor(Math.random()*2);
System.out.println("choice:"+choice);
if(choice == 0){
return new SgtPeppers();
}else{
return new WhiteAlbum();
}
}
}
6.JavaConfigAction.java
package com.taozhiye.controller; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import com.taozhiye.JavaConfigTemp.CDPlayer; @Controller
public class JavaConfigAction { @Autowired(required = false)
public CDPlayer CDPlayer; @RequestMapping("getCDPlayer")
public @ResponseBody String getCDPlayer(){
System.out.println(CDPlayer);
if(CDPlayer!=null){
CDPlayer.get();
}
return "CDPlayer";
}
}
这样就完成了简单的java中进行显式配置。
Spring装配bean(在java中进行显式配置)的更多相关文章
- Spring装配Bean之Java代码装配bean
尽管通过组件扫描和自动装配实现Spring的自动化配置很方便也推荐,但是有时候自动配置的方式实现不了,就需要明确显示的配置Spring.比如说,想要将第三方库中的组件装配到自己的应用中,这样的情况下, ...
- JAVA入门[13]-Spring装配Bean
一.概要 Sping装配bean主要有三种装配机制: 在XML中进行显式配置. 在Java中进行显式配置. 隐式的bean发现机制和自动装配. 原则: 建议尽可能地使用自动配置的机制,显式配置越少越好 ...
- spring装配bean的三种方式及其混合装配
在spring容器中装配bean有三种基本方式和混合装配方式: 隐式的bean自动发现机制和自动装配 在java中进行显式配置 在xml中配置 混合装配(在多个java文件中配置.在JavaConfi ...
- 二、Spring装配Bean
内容 声明bean 构造器注入和Setter方法注入 装配Bean 控制bean的创建和销毁 关键词 装配(wiring) 组件扫描(component scanning) 自动装配(AutoWiri ...
- 【转】spring 装配Bean中构造参数的注入
转载自:http://www.bianceng.cn/Programming/Java/201307/37027.htm spring 装配Bean中构造参数的注入 spring装配bean中还有一种 ...
- Spring装配bean
Spring配置的可选方案 Spring提供了如下三种装配机制: (1)在XML中显式配置 (2)在Java中显式配置 (3)隐式的bean发现机制和自动装配 Spring有多种方式可以装配bean, ...
- Spring装配Bean的三种方式+导入和混合配置
目录 Spring IoC与bean 基于XML的显式装配 xml配置的基本结构 bean实例的三种创建方式 依赖注入的两种方式 构造器注入方式 setter方法注入方式 利用命名空间简化xml 基于 ...
- Spring 装配Bean
Spring 装配Bean 装配解释: 创建应用对象之间协作关系的的行为通常称为装配(wiring),这也是依赖注入的本质 依赖注入是Spring的基础要素 一 : 使用spring装配Bean基础介 ...
- Spring装配Bean之XML装配bean
在Spring刚出现的时候,XML是描述配置的主要方式,在Spring的名义下,我们创建了无数行XML代码.在一定程度上,Spring成为了XML的同义词. 现在随着强大的自动化配置和Java代码的配 ...
随机推荐
- 关于JavaScript的操作
一:js基础. 1. var是定义js变量的关键字. 如: var leng=5;定义一个变量为5 var length = 16; // Number 通过数字字面量赋值 var points = ...
- html canvas 的宽高以及像素限制
canvas 宽高设置不合适的话,是画不出东西出来的 https://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-elem ...
- 微信小程序 web-view 的 url 带参问题
在微信小程序开发过程中,会需要跳转到外部链接,微信提供了 <web-view>组件供我们使用. 为减少重复代码,一般会将这个功能单独抽取为一个页面供大家使用: <template&g ...
- ubuntu 16.04下源码安装opencv3.4
源码安装opencv,遇到了一些小波折,这里做个备忘吧. 首先要下载源码,路径: https://github.com/opencv/opencv 下载成功后,在opencv的根目录下执行下面操作: ...
- [源码]K8 Cscan模块 C#获取内网主机IP/机器名/Banner/网页标题源码
[原创]K8 Cscan 大型内网渗透自定义扫描器 https://www.cnblogs.com/k8gege/p/10519321.html Cscan简介:何为自定义扫描器?其实也是插件化,但C ...
- MyBatis源码解析【7】接口式编程
前言 这个分类比较连续,如果这里看不懂,或者第一次看,请回顾之前的博客 http://www.cnblogs.com/linkstar/category/1027239.html 修改例子 在我们实际 ...
- Kafka实战-数据持久化
1.概述 经过前面Kafka实战系列的学习,我们通过学习<Kafka实战-入门>了解Kafka的应用场景和基本原理,<Kafka实战-Kafka Cluster>一文给大家分享 ...
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十八):注册中心(Spring Cloud Consul)
什么是 Consul Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其它分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与 ...
- vs2015+qt5.9.7配置跨平台的工程
环境:vs2015 update 3 + qt 5.9.7 问题:代码中存在中文无法编译 附加目的:支持跨平台 问题分析:代码的编码格式导致中文编译错误,windows默认gb2312编码,qt默认u ...
- Solidity中uint转bytes
Solidity中uint转bytes方法如下: pragma solidity ^0.4.2; contract Test { function toBytesNickJohnson(uint256 ...