`
liujiekasini0312
  • 浏览: 146993 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring中基于Java的配置@Configuration和@Bean用法

 
阅读更多

spring中为了减少xml中配置,可以生命一个配置类(例如SpringConfig)来对bean进行配置。

一、首先,需要xml中进行少量的配置来启动Java配置:

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <beansxmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"
  4. xmlns:tx="http://www.springframework.org/schema/tx"xmlns:p="http://www.springframework.org/schema/p"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xsi:schemaLocation="
  7. http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.2.xsd
  8. http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.2.xsd
  9. http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.2.xsd
  10. http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.2.xsd">
  11. <context:component-scanbase-package="SpringStudy.Model">
  12. </context:component-scan>
  13. </beans>

二、定义一个配置类

用@Configuration注解该类,等价 与XML中配置beans;用@Bean标注方法等价于XML中配置bean。

代码如下:

  1. packageSpringStudy;
  2. importorg.springframework.context.annotation.Bean;
  3. importorg.springframework.context.annotation.Configuration;
  4. importSpringStudy.Model.Counter;
  5. importSpringStudy.Model.Piano;
  6. @Configuration
  7. publicclassSpringConfig{
  8. @Bean
  9. publicPianopiano(){
  10. returnnewPiano();
  11. }
  12. @Bean(name="counter")
  13. publicCountercounter(){
  14. returnnewCounter(12,"ShakeitOff",piano());
  15. }
  16. }
三、基础类代码

Counter:

  1. packageSpringStudy.Model;
  2. publicclassCounter{
  3. publicCounter(){
  4. }
  5. publicCounter(doublemultiplier,Stringsong,Instrumentinstrument){
  6. this.multiplier=multiplier;
  7. this.song=song;
  8. this.instrument=instrument;
  9. }
  10. privatedoublemultiplier;
  11. privateStringsong;
  12. @Resource
  13. privateInstrumentinstrument;
  14. publicdoublegetMultiplier(){
  15. returnmultiplier;
  16. }
  17. publicvoidsetMultiplier(doublemultiplier){
  18. this.multiplier=multiplier;
  19. }
  20. publicStringgetSong(){
  21. returnsong;
  22. }
  23. publicvoidsetSong(Stringsong){
  24. this.song=song;
  25. }
  26. publicInstrumentgetInstrument(){
  27. returninstrument;
  28. }
  29. publicvoidsetInstrument(Instrumentinstrument){
  30. this.instrument=instrument;
  31. }
  32. }

Piano类

  1. packageSpringStudy.Model;
  2. publicclassPiano{
  3. privateStringname="Piano";
  4. privateStringsound;
  5. publicStringgetName(){
  6. returnname;
  7. }
  8. publicvoidsetName(Stringname){
  9. this.name=name;
  10. }
  11. publicStringgetSound(){
  12. returnsound;
  13. }
  14. publicvoidsetSound(Stringsound){
  15. this.sound=sound;
  16. }
  17. }

四、调用测试类

  1. packagewebMyBatis;
  2. importorg.springframework.context.ApplicationContext;
  3. importorg.springframework.context.annotation.AnnotationConfigApplicationContext;
  4. importSpringStudy.Model.Counter;
  5. publicclassSpringTest{
  6. publicstaticvoidmain(String[]args){
  7. //ApplicationContextctx=newClassPathXmlApplicationContext("spring/bean.xml");//读取bean.xml中的内容
  8. ApplicationContextannotationContext=newAnnotationConfigApplicationContext("SpringStudy");
  9. Counterc=annotationContext.getBean("counter",Counter.class);//创建bean的引用对象
  10. System.out.println(c.getMultiplier());
  11. System.out.println(c.isEquals());
  12. System.out.println(c.getSong());
  13. System.out.println(c.getInstrument().getName());
  14. }
  15. }

注意:如果是在xml中配置beans和bean的话,或者使用自动扫描调用的话,代码为

ApplicationContext ctx = new ClassPathXmlApplicationContext("spring/bean.xml");// 读取bean.xml中的内容
Counter c = ctx.getBean("counter", Counter.class);// 创建bean的引用对象

五、运行结果

12.0
false
Shake it Off
Piano

分享到:
评论

相关推荐

    Spring中基于Java的配置@Configuration和@Bean用法详解

    `@Configuration`和`@Bean`注解使得我们可以直接在Java类中编写配置,避免了XML文件的繁琐。这种方式不仅提高了可读性,也使得集成测试变得更加方便,因为可以直接注入配置类而不是XML配置文件。通过熟练掌握这两个...

    @Configuration和@Bean的用法和理解.docx

    ### @Configuration 和 @Bean 的用法与理解 ...在实际开发过程中,了解和掌握这些注解的使用方法是非常必要的,这不仅能帮助我们更好地构建Spring应用,也能让我们更加深入地理解Spring框架的工作原理。

    IOC之基于Java类的配置Bean

    基于Java类的配置Bean是Spring实现IOC的一种方式,与XML配置相比,提供了更灵活和类型安全的选项。 在Spring中,我们可以通过编写Java类来定义Bean的配置,这种配置方式通常被称为JavaConfig。这种方式的优点在于...

    Spring boot基于java的配置

    在 Spring Boot 中,我们使用 `@Bean` 注解来声明一个方法将返回一个 Spring 管理的 bean。例如,创建一个简单的 `HelloService`: ```java @Configuration public class AppConfig { @Bean public HelloService...

    spring boot基于Java的容器配置讲解

    本文将深入探讨Spring Boot基于Java的容器配置,通过示例代码帮助理解其工作原理和使用方法。 首先,Spring容器是Spring框架的核心,它负责管理对象的生命周期,包括创建、初始化、装配和销毁。Spring提供了多种...

    使用java类配置Bean

    在Spring框架中,Bean的配置方式主要有两种:XML配置和基于Java的配置。本文将深入探讨"使用java类配置Bean"这一主题,特别是在SIA实战项目中的应用。 首先,让我们理解Spring框架的核心概念——Bean。在Spring中,...

    Spring 基于java的容器配置.docx

    Spring 基于 Java 的容器配置是 Spring 框架中一种现代化的配置方式,它引入了 `@Configuration` 和 `@Bean` 注解,替代传统的 XML 配置。这种方式使得配置更加简洁、直观,同时也更易于集成到 Java 代码中。 `@...

    Springboot @Configuration @bean注解作用解析

    1. 配置第三方框架:在 Spring Boot 项目中,我们可以使用 @Configuration 和 @Bean 注解来配置第三方框架,例如 Shiro 框架。 2. 注册 Bean:我们可以使用 @Bean 注解来注册 Bean 到 Spring 容器中,以便其他组件...

    跟我学Spring3(12.4)零配置之基于Java类定义

    传统的Spring配置是通过XML文件进行的,但随着Spring的发展,基于Java的配置(@Configuration和@Bean注解)逐渐成为主流。 1. **基于Java的配置类**:在Spring中,你可以创建一个带有@Configuration注解的类,这个...

    Spring @Configuration注解及配置方法

    在实际开发中,Spring Boot社区推荐使用基于JavaConfig的配置形式,即使用@Configuration注解标注的配置类。这种配置形式可以替换传统的XML配置文件,更加灵活和方便。 六、小结 本文通过对@Configuration注解和...

    Spring Bean的初始化和销毁实例详解

    在Spring框架中,我们可以使用@Configuration注解来配置Bean的初始化和销毁。例如: ```java @Configuration @ComponentScan("com.wisely.highlight_spring4.ch2.prepost") public class PrePostConfig { @Bean...

    Java中Spring获取bean方法小结

    - **通过`@Configuration`和`@ComponentScan`**:Spring 3.0引入了基于Java的配置,允许在Java类中定义Bean并扫描特定包下的组件。 - **使用`Prototype`作用域的Bean**:如果一个Bean是Prototype作用域,每次请求...

    41. Spring Boot 使用Java代码创建Bean并注册到Spring中【从零开始学Spring Boot】

    `@Configuration`类表示这是一个配置类,`@Bean`注解方法表示该方法的返回值将作为一个Bean注册到Spring容器。 ```java @Configuration public class AppConfig { @Bean public HelloWorldService ...

    Spring @Bean注解配置及使用方法解析

    Spring @Bean 注解配置及使用方法解析 @Bean 注解是 Spring 框架中用于生成 Bean 实例的注解,主要用在方法上,声明当前方法体中包含了最终产生 Bean 实例的逻辑。该注解可以与 @Component 或 @Configuration 一起...

    Spring中 Configuration的使用.docx

    @Configuration 和 @Bean 注解是 Spring 中非常重要的部分,它们提供了声明式配置的能力,使得我们可以用 Java 代码替代 XML 配置来管理 Bean。通过这种方式,我们可以更灵活地控制 Bean 的创建、初始化和装配,同时...

    自定义@Configuration配置类启用开关.zip

    在Spring Boot框架中,`@Configuration`注解是核心组件之一,它用于标记一个类作为配置类,使得我们可以使用Java配置来替代XML配置。在这个"自定义@Configuration配置类启用开关.zip"项目中,我们很显然会看到如何...

    spring famework 基于注解配置示例

    通过以上介绍,我们已经了解了Spring框架中基于注解配置的基本用法。这种方式让我们的代码更易读、更少的XML配置,提高了开发效率。在实际项目中,我们还可以结合Spring Boot和其他Spring生态的注解,如Spring Data ...

    Spring In Action 使用@Autowired 和@ Resource 自动装配Bean

    在Spring配置中,我们可以通过`@Configuration`和`@Bean`进一步定制Bean的创建和装配过程,与`@Autowired`和`@Resource`配合使用,实现更加灵活的依赖注入。 总之,`@Autowired`和`@Resource`都是Spring框架中的...

    Spring的Java配置方式Demo

    Spring框架是Java开发中广泛应用的一个轻量级框架,它的核心特性包括依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect Oriented Programming,简称AOP)。在Spring 4.0之后,为了提供更加现代化的...

    Spring--2.Spring 中的 Bean 配置-3

    此外,Bean的初始化和销毁方法可以使用`init-method`和`destroy-method`属性(在XML中)或`@PostConstruct`和`@PreDestroy`注解(在Java或注解配置中)来定义。这些方法会在Bean生命周期的特定时刻被调用。 最后,...

Global site tag (gtag.js) - Google Analytics