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包

1 <context:component-scan base-package="com.taozhiye.JavaConfig"></context:component-scan>

  

  2.CDPlayer.java

1 package com.taozhiye.JavaConfigTemp;
2
3 public interface CDPlayer {
4
5     public void get();
6
7 }

  3.SgtPeppers.java

1 package com.taozhiye.JavaConfigTemp;
2
3 public class SgtPeppers implements CDPlayer {
4     @Override
5     public void get() {
6         System.out.println("SgtPeppers");
7     }
8
9 }

  4.WhiteAlbum.java

 1 package com.taozhiye.JavaConfigTemp;
 2
 3 public class WhiteAlbum implements CDPlayer {
 4
 5     @Override
 6     public void get() {
 7         System.out.println("WhiteAlbum");
 8     }
 9
10 }

  5.JavaConfig.java  需要扫描本文件所在包

 1 package com.taozhiye.JavaConfig;
 2
 3 import org.springframework.context.annotation.Bean;
 4 import org.springframework.context.annotation.Configuration;
 5
 6 import com.taozhiye.JavaConfigTemp.CDPlayer;
 7 import com.taozhiye.JavaConfigTemp.SgtPeppers;
 8 import com.taozhiye.JavaConfigTemp.WhiteAlbum;
 9
10 @Configuration
11 public class JavaConfig {
12
13     @Bean(name = "CDPlayer")
14     public CDPlayer get(){
15         int choice = (int) Math.floor(Math.random()*2);
16         System.out.println("choice:"+choice);
17         if(choice == 0){
18             return new SgtPeppers();
19         }else{
20             return new WhiteAlbum();
21         }
22     }
23 }

  6.JavaConfigAction.java

 1 package com.taozhiye.controller;
 2
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import org.springframework.stereotype.Controller;
 5 import org.springframework.web.bind.annotation.RequestMapping;
 6 import org.springframework.web.bind.annotation.ResponseBody;
 7
 8 import com.taozhiye.JavaConfigTemp.CDPlayer;
 9
10
11 @Controller
12 public class JavaConfigAction {
13
14     @Autowired(required = false)
15     public CDPlayer CDPlayer;
16
17     @RequestMapping("getCDPlayer")
18     public @ResponseBody String getCDPlayer(){
19         System.out.println(CDPlayer);
20         if(CDPlayer!=null){
21             CDPlayer.get();
22         }
23         return "CDPlayer";
24     }
25 }

这样就完成了简单的java中进行显式配置。

时间: 2024-12-20 22:57:53

Spring装配bean(在java中进行显式配置)的相关文章

Spring装配bean--02通过Java代码装配bean

Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系 Spring提供了三种主要的装配机制: 在XML中进行显式配置 在Java中进行显式配置 隐式的bean发现机制和自动装配 2在Java中显式配置 尽管在很多场景下通过组件扫描和自动装配实现Spring的自动化装配是更为推荐的方式,但是当你要将第三方库中的组件装配到你的应用中,这时就必须显式的配置bean 显式配置包括:Java和XML,我更推荐使用Java类配置,就像上文中的JavaConfig那样 JavaCon

spring装配bean有几种方式?

一 前言 在XML中进行显式配置. 在Java中进行显式配置. 隐式的bean发现机制和自动装配 关于xml配置不会在本篇说明,有兴趣的读者可以自行了解学习: 知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;) 二 自动装配bean 自动装配Bean主要通过如下两个方式实现自动装备bean 组件扫描(component scanning):Spring会自动扫描发现上下文中所创建的bean:对应

Spring 装配Bean

Spring 装配Bean 装配解释: 创建应用对象之间协作关系的的行为通常称为装配(wiring),这也是依赖注入的本质 依赖注入是Spring的基础要素 一 : 使用spring装配Bean基础介绍 1 :声明Bean Bean的概念:beans 本身是一个大工厂,beans中的每一个bean就等于定义了一个组件,每个组件中就是我们具体的某个功能 1.1 :创建Spring 配置Spring是很重要的,如果没有配置Spring,那么就等于声明了一个空的容器,毫无意义. 通过配置Spring容

Spring装配Bean的过程补充

对上一篇的<Spring装配Bean的过程>的过程说一下,不然真产生了误区. 误区在哪里呢?那就是spring bean的作用域问题. 说哈常用的两种作用域:默认是scope = singletonsingleton:在每个Spring IoC容器中一个bean定义对应一个对象实例. prototype:一个bean定义对应多个对象实例,每次获取bean就是实例化新的bean. 下面说重点了: 当scope=singleton,即默认情况,会在容器初始化时实例化.但我们可以指定Bean节点的l

Spring装配Bean的过程

首先说一个概念:“懒加载” 懒加载:就是我们在spring容器启动的是先不把所有的bean都加载到spring的容器中去,而是在当需要用的时候,才把这个对象实例化到容器中. spring配置文件中bean默认是lazy-init=“false”为非懒加载.下面具体说明. 1.默认情况下bean实例化过程: AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("/beans.xml"); //随着spri

java中的链式编程

听到链式编程听陌生的,但是写出来就感觉其实很熟悉 1 package test; 2 3 public class Test { 4 String name; 5 String phone; 6 String mail; 7 String sex; 8 public Test setName(String name) { 9 this.name = name; 10 return this; 11 } 12 public Test setPhone(String phone) { 13 this

关于CodeFirst异常:无法确定类型&#39;XXX&#39;和类型‘YYY’之间的关联的主体端,必须使用关系 Fluent API 或数据注释显式配置此关联的主体端。

此错误的原因是,你配置两个实体间的关系为一对一 然而我认为的一对一关系是,两者之间必须存在一个主体, 也就是说,你不能表1的外键是表2的主键并且表1的主键是表2的外键, 这样不符合数据库式吧? 我想多数人犯这个错误是无意的,并不是想表1的外键是表2的主键并且表1的主键是表2的外键, 怎么改呢?确定主体! 主体就是你要把其他实体的主键存进来的实体. 把非实体的导航属性删除就ok了. 关于CodeFirst异常:无法确定类型'XXX'和类型'YYY'之间的关联的主体端,必须使用关系 Fluent A

java之Spring装配Bean(手动装配、自动装配、注解装配)

在上一篇控制反转中我们看到了依靠一个Bean文件来实现对代码的控制,可谓十分便捷,再也不用去实例化对象了,2333~~~ 1.手动装配 1 <bean id="todo" class="com.eco.daoimp.Usertodo1"></bean> 2 3 <!--定义Userservice类内部接口的引用(userdao)指向具体的实现类对象(Usertodo1) --> 4 <bean id="userse

spring 装配bean的三种方式

这段时间在学习Spring,依赖注入DI和面向切面编程AOP是Spring框架最核心的部分.这次主要是总结依赖注入的bean的装配方式. 什么是依赖注入呢?也可以称为控制反转,简单的来说,一般完成稍微复杂的业务逻辑,可能需要多个类,会出现有些类要引用其他类的实例,也可以称为依赖其他类.传统的方法就是直接引用那个类对象作为自己的一个属性,但如果我们每次创建这个类的对象时,都会创建依赖的类的对象,还有如果那个类将来可能不用了,还需要到这个类去删除这个对象,那破坏了代码的复用性和导致高度耦合! 依赖注