zoukankan      html  css  js  c++  java
  • Spring中基于Java的配置@Configuration和@Bean用法

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

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

    <?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:aop="http://www.springframework.org/schema/aop"  
        xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"  
        xmlns:context="http://www.springframework.org/schema/context"  
        xsi:schemaLocation="  
                http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd  
                http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd  
                http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd  
                http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">  
       <context:component-scan base-package="SpringStudy.Model">  
        </context:component-scan>  
    </beans>  

    二、定义一个配置类

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

    代码如下:

    package SpringStudy;  
    import org.springframework.context.annotation.Bean;  
    import org.springframework.context.annotation.Configuration;  
    import SpringStudy.Model.Counter;  
    import SpringStudy.Model.Piano;  
      
    @Configuration  
    public class SpringConfig {  
      
        @Bean  
        public Piano piano(){  
            return new Piano();  
        }  
        @Bean(name = "counter")   
        public Counter counter(){  
            return  new Counter(12,"Shake it Off",piano());  
        }  
    }  

    三、基础类代码

    package SpringStudy.Model;  
      
    public class Counter {  
        public  Counter() {  
        }  
      
        public  Counter(double multiplier, String song,Instrument instrument) {  
            this.multiplier = multiplier;  
            this.song = song;  
            this.instrument=instrument;  
        }  
      
        private double multiplier;  
      
        private String song;  
      
        @Resource  
        private Instrument instrument;  
      
        public double getMultiplier() {  
            return multiplier;  
        }  
      
        public void setMultiplier(double multiplier) {  
            this.multiplier = multiplier;  
        }  
      
      
        public String getSong() {  
            return song;  
        }  
      
        public void setSong(String song) {  
            this.song = song;  
        }  
      
        public Instrument getInstrument() {  
            return instrument;  
        }  
      
        public void setInstrument(Instrument instrument) {  
            this.instrument = instrument;  
        }  
      
    }  

    Piano类

    package SpringStudy.Model;  
      
      
    public class Piano {  
        private String name="Piano";  
        private String sound;  
      
        public String getName() {  
            return name;  
        }  
      
        public void setName(String name) {  
            this.name = name;  
        }  
      
        public String getSound() {  
            return sound;  
        }  
      
        public void setSound(String sound) {  
            this.sound = sound;  
        }  
      
    }  

    四、调用测试类

    package webMyBatis;  
      
    import org.springframework.context.ApplicationContext;  
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;  
    import SpringStudy.Model.Counter;  
      
    public class SpringTest {  
        public static void main(String[] args) {  
            //ApplicationContext ctx = new ClassPathXmlApplicationContext("spring/bean.xml");// 读取bean.xml中的内容  
            ApplicationContext annotationContext = new AnnotationConfigApplicationContext("SpringStudy");  
            Counter c = annotationContext.getBean("counter", Counter.class);// 创建bean的引用对象  
            System.out.println(c.getMultiplier());  
            System.out.println(c.isEquals());  
            System.out.println(c.getSong());  
                System.out.println(c.getInstrument().getName());  
        }  
    }  

    注意:如果是在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

  • 相关阅读:
    mvc 当中 [ValidateAntiForgeryToken] 的作用 转载https://www.cnblogs.com/hechunming/p/4647646.html
    ASP.NET MVC学习系列(一)-WebAPI初探
    ASP.NET MVC学习系列(二)-WebAPI请求 转载https://www.cnblogs.com/babycool/p/3922738.html
    MVC和WebApi 使用get和post 传递参数。 转载https://blog.csdn.net/qq373591361/article/details/51508806
    Web API与AJAX:理解FormBody和 FormUri的WebAPI中的属性
    webApi之FromUri和FromBody区别
    C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解 转载 https://www.cnblogs.com/landeanfen/p/5501487.html
    JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查
    PHP 生成唯一的激活码
    C++ virtual继承
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/7340516.html
Copyright © 2011-2022 走看看