spring 基于java的注入

来源:互联网 发布:网吧营销大师软件 编辑:程序博客网 时间:2024/05/08 11:15

并不是所有的人都喜欢用xml来配置spring,尤其是那些没学过xml或者讨厌xml的人。因此spring出现了一种基于java(就是通过写java代码来配置)的配置方法。
我在上次说过,springIOC容器,就是一个键值对的map,而且spring本来就是用java写的,因此用java来进配置,就是相当于新建一个实例放入这个springIOC容器当中,这和我们平常写代码非常相似。
言归正传,使用java风格的第一步就是配置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/beans       http://www.springframework.org/schema/beans/spring-beans.xsd       http://www.springframework.org/schema/context       http://www.springframework.org/schema/context/spring-context.xsd       ">       <!--这个liu就是你使用spring的包名-->    <context:component-scan base-package="liu"/></beans>

然后定义一个配置类:
比如在我的工程下有一个A类,我需要对A类进行注入,那么在配置类中就可以这样写。

import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class SpringConfig{    @Bean    public A a(){        return new A();    }}

@Configuration:这个注释必须有,在spring扫描包的时候,扫描到这个注解就会把这个类当成配置类。也就相当于配置文件当中的一样
@Bean:注入一个bean,也就是相当于配置文件当中的一样
A:放回类型对应着中的class
a方法名:对应着中的id
有的人说这样弄比配置有什么优势?
优势在于注入值的时候。
比如A是这样的

public class A{private int num;public A(int num){    this.num=num;}}
import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class SpringConfig{    @Bean    public A a(){        return new A(10);    }}

你可以写成上面这样。
当然也可以是set注入:

public class A{private int num;public void setNum(int num){    this.num=num;}}
import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class SpringConfig{    @Bean    public A a(){        A aa=new A();        aa.setNum(10);        return aa;    }}

还有通过引用来进行注入

public class A{private B b;public void setB(B b){    this.b=b;}}
public class B{}
import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class SpringConfig{    @Bean    public B b(){        return new B();    }    @Bean    public A a(){        A aa=new A();        aa.setB(b());        return aa;    }}

剩下的大家举一反三,比起配置文件方便了很多吧,尤其是注入复杂的参数的时候。

0 0
原创粉丝点击