目录

一、传统的XML配置方式

二、基于java注解的配置

三、基于类的Java Config


正文

Spring Bean有三种配置方式:

  • 传统的XML配置方式
  • 基于注解的配置
  • 基于类的Java Config

添加spring的maven repository

    <dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><!--这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心 --><version>4.1.0.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><!--这个jar文件为Spring核心提供了大量扩展 --><version>4.1.0.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><!--对JUNIT等测试框架的简单封装 --><version>4.1.0.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><!--为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理。--><version>4.1.0.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><!--这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行(IoC/DI)操作相关的所有类 --><version>4.1.0.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><!--这个jar文件包含对Spring对JDBC数据访问进行封装的所有类。 --><version>4.1.0.RELEASE</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency>

一、传统的XML配置方式

BeanFactory.java

package com.stonegeek.service;public interface BeanFactory {public void Beantest();
}

BeanFactoryImpl.java

package com.stonegeek.service.impl;import com.stonegeek.service.BeanFactory;public class BeanFactroyImpl implements BeanFactory {@Overridepublic void Beantest() {System.out.println("----------------This is a 传统的XML配置的bean!-------------------");}
}

  applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd"><bean id="beanFactroy" class="com.stonegeek.service.impl.BeanFactroyImpl" /></beans>

  TestBean1.java

package com.stonegeek;import com.stonegeek.service.BeanFactory;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBean1 {@Testpublic void test(){ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml");BeanFactory beanFactory=(BeanFactory) ctx.getBean("beanFactroy");beanFactory.Beantest(); //----------------This is a 传统的XML配置的bean!-------------------}
}

二、基于java注解的配置

  使用组件扫描可以不必在Spring的配置文件中配置各个`<bean/>`节点:

<context:component-scan base-package="com.stonegeek" />

`base-package`表示需要扫描的“根包”,当配置后,Spring容器会自动扫描根包下所有类,及各及子包类。

目的:让Spring知道有哪些类,事实上,只是配置组件扫描,Spring并不会创建这些类的对象。如需要Spring创建某些类的对象,还需要为这些类添加注解!

常用类注解
@Component---------通用注解(推荐)
@Named-------------通用注解(不推荐)
@Service-----------业务逻辑类注解
@Controller--------控制器类注解
@Repository--------持久层(数据访问层)处理类注解
>以上5种注解是等效的!只是语义不同!(推荐采用对应的)

当同时配置组件扫描和注解后,Spring就会创建这些对象!

  • Spring创建类的对象时,默认使用bean的id是将类的首字母改为小写:

class:Userao---->bean id:userDao

  • 如果需要自定义名称,可以在注解上添加配置:

@Component("dao")

  BeanFactoryImpl.java

package com.stonegeek.service.impl;import com.stonegeek.service.BeanFactory;
import org.springframework.stereotype.Service;@Service("beanFactory")
public class BeanFactroyImpl implements BeanFactory {@Overridepublic void Beantest() {System.out.println("----------------This is a 基于Java注解的bean!-------------------");}
}

  applicationContext.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"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:component-scan base-package="com.stonegeek" /></beans>

  TestBean2.java

package com.stonegeek;import com.stonegeek.service.BeanFactory;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBean2 {@Testpublic void test(){ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml");BeanFactory beanFactory=(BeanFactory) ctx.getBean("beanFactory");beanFactory.Beantest();  //This is a 基于java注解的bean!}
}

三、基于类的Java Config

  通过java类定义spring配置元数据,且直接消除xml配置文件

  Spring3.0基于java的配置直接支持下面的注解:

  •   @Configuration
  •   @Bean
  •   @DependsOn
  •   @Primary
  •   @Lazy
  •   @Import
  •   @ImportResource
  •   @Value

  BeanFactoryImpl.java

package com.stonegeek.service.impl;import com.stonegeek.service.BeanFactory;public class BeanFactoryImpl implements BeanFactory {@Overridepublic void Beantest() {System.out.println("-----This is a 基于类的Java Config的bean!-----");}
}

  BeanConfig.java

package com.stonegeek.service.config;import com.stonegeek.service.BeanFactory;
import com.stonegeek.service.impl.BeanFactoryImpl;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class BeanConfig {@Beanpublic BeanFactory beanFactory(){return new BeanFactoryImpl();}
}

  TestBean3.java

package com.stonegeek;import com.stonegeek.service.BeanFactory;
import com.stonegeek.service.config.BeanConfig;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class TestBean3 {@Testpublic void test(){ApplicationContext applicationContext=new AnnotationConfigApplicationContext(BeanConfig.class);BeanFactory beanFactorys=applicationContext.getBean(BeanFactory.class);beanFactorys.Beantest();  //This is a 基于类的Java Config Bean!}
}

  以上就是spring bean的三种配置方式的简单介绍!!

Spring Bean的三种配置方式相关推荐

  1. Spring bean的三种注入方式

    Spring的一个重要原理就是IOC(Inverse Of Control),即控制反转.IOC就是一种将组件依赖关系的创建和管理置于程序外部的技术,在Spring中Bean组件的实例化和依赖关系的管 ...

  2. Spring bean的三种创建方式

    1.创建Spring工程 使用eclipse创建一个Spring工程,一个简单的方法就是先创建一个Java工程,然后将Spring的Jar包全部放入到工程里面即可开始编写基于Spring框架的程序.S ...

  3. MyEclipse网站服务器,MyEclipse中web服务器的三种配置方式

    初学Javaweb开发的人们都会遇到一个问题,就是服务器环境的搭建配置问题.下面介绍三种服务器的搭建方式. 直接修改server.xml文件 当你写了一个web应用程序(jsp/servlet),想通 ...

  4. spring入门之Spring 常用的三种注入方式

    Spring 常用的三种注入方式 Spring 通过 DI(依赖注入)实现 IOC(控制反转),常用的注入方式主要有三种:构造方法注入,set 方法注入,基于注解的注入. 一.通过构造方法注入 先简单 ...

  5. Spring AOP的三种实现方式

    目录 一.什么是AOP 二.Spring AOP的三种实现方式 1.通过Spring API实现AOP (1)编写业务接口和实现类 (2)编写增强类,并实现Spring API相关接口的方法 (3)在 ...

  6. Nhibernate 三种配置方式

    Nhibernate 三种配置方式 Posted on 2010-06-15 11:47 linFen 阅读(153) 评论(0) 编辑 收藏 1 App.config 的配置: <?xml v ...

  7. java jndi tomcat_tomcat下jndi的三种配置方式

    Java命名和目录接口(the Java naming and directory interface,JNDI)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得读 ...

  8. tomcat下jndi的三种配置方式

    jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得我们可以用 ...

  9. 今日说“法”:FPGA的三种配置方式

    今日说"法":FPGA的三种配置方式 欢迎大侠来到FPGA技术江湖新栏目今日说"法",当然,在这里我们肯定不是去研究讨论法律法规知识,那我们讨论什么呢,在这里我 ...

最新文章

  1. kmeans及模型评估指标_模型评估常用指标
  2. Soldier and Badges
  3. c语言一对圆括号不能,C语言单元习题集
  4. 【Verilog HDL 训练】第 11 天(分频电路)
  5. Map集合的遍历(java)
  6. [ay原创作品]用wpf写了个模仿36Kr网站登录背景的效果
  7. mysql mariadb 选择_MariaDB 选择数据库
  8. 今日头条适配方案_今日头条信息流广告创意优化方案!
  9. 64位汇编中的布尔指令
  10. Flutter修仙传第二章:路由详解
  11. 把MSDE 2000 打包的自己的安装程序说明
  12. JSON值的类型:数字,字符串,逻辑值,数组,对象,null
  13. 集成运放(一)--同相、反相和差动差分放大电路
  14. Linux 最全的添加开机启动方法
  15. ubuntu下公式编辑器EqualX的安装和使用
  16. Process finished with exit code -1073740791 (0xC0000409) 一种解决方案
  17. 用html和js制作一个控制灯泡开关效果
  18. 解读国内外激光雷达技术差异
  19. 计算机毕业设计Java智慧防疫上报系统小程序端(源码+系统+mysql数据库+Lw文档)
  20. 全局vue中修改字体样式 苹方字体 微软雅黑 亲测可用

热门文章

  1. 一个服务器上可装多套抄表系统吗,云服务器做集中抄表
  2. coreldraw2022免费直装新版本免费无限制随意使用
  3. python中的小技巧
  4. 即刻报名|汽车制造行业如何玩转大数据分析?
  5. IRS中波束赋形设计源代码之AO算法学习(持续更新,多多交流)
  6. mysql数据 odbc_MySQL数据库之mysql odbc 配置详解、解决方案
  7. 建助META分区达到视频输入是倒车(CVBS)还是VGA输入
  8. Jack Ma 你当初UT了没?
  9. 【数据结构】哈夫曼树及哈夫曼编码
  10. springboot车辆管理系统