基于注解@Bean的配置使用方式

来源:互联网 发布:淘宝买家怎么修改评论 编辑:程序博客网 时间:2024/05/16 19:12

  • Bean食用指南
      • -1确认依赖
      • - 2配置spring的XMl文件开启组件扫描
      • - 3创建需要交付给Spring容器管理的Java类别
      • - 4用Bean在采用了Configuration的类中愉快的使用注解声明Bean
      • -5当然一个好的java程序肯定是少不了测试的所以我们需要一个测试来试验一下是否可以运行
      • end

@Bean食用指南

@Bean功能提供了在Java类中声明Bean的方式,减少了xml文件的配置,可以极大的减少xml文件的臃肿程度.,为们得确认我们的开发环境,由于只是测试一下功能,所以需要的环境为Jdk1.8,Maven,Idea

为此 我们需要做的是

-1.确认依赖

        spring-core        spring-beans        spring-context        spring-context-support        junit4

1)先去确认一下我们需要依赖的包的版本,在此,导入spring-4.8RELEASE
在项目的pom.xml中配置

<properties>
<spring.version>4.3.8.RELEASE</spring.version>
<junit.version>4.12</junit.version>
</properties>

    <dependencies>    <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-core</artifactId>            <version>${spring.version}</version>        </dependency>       <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-beans</artifactId>            <version>${spring.version}</version>        </dependency>          <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context</artifactId>            <version>${spring.version}</version>        </dependency>        <!--为了更好的测试,当然需要加入测试支持-->           <!--test start-->        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>${junit.version}</version>        </dependency>    <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-test</artifactId>            <version>${spring.version}</version>        </dependency>       <!--end start-->    </dependencies>     ```

- 2.配置spring的XMl文件,开启组件扫描

配置文件就起名为spring-config.xml
当然 配置文件就要放在resource中

  <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"     xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util"xsi:schemaLocation="http://www.springframework.org/schema/beans               http://www.springframework.org/schema/beans/spring-beans-3.1.xsd         http://www.springframework.org/schema/context           http://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://www.springframework.org/schema/utilhttp://www.springframework.org/schema/util/spring-util-2.0.xsd">    <!-- 自动扫描 -->    <context:component-scan base-package="com.cn.nlg" />   <!-- 这个就是引入配置文件了,不过这里好像不需要用到,不过既然已经放入了util,就用一个作为示例了~    <util:properties id="jdbcConfiguration" location="classpath:jdbc.properties"/>     --></beans>

- 3.创建需要交付给Spring容器管理的Java类,别

在创建COnfiguration之前,我们先得创建一些可以放入Configuration中的Model,我们就以Film为例
Created with Raphaël 2.1.0USAFilmUSAFilmfilmfilmJPFilmJPFilmAVFileAVFileAnimalAnimal欧美电影分支日本电影分支小电影日本动漫

根据以上信息,建立起如下model

  package com.cn.nlg.model;/** * Created by Administrator on 2017/6/8. */public interface Film {     void paly();}
package com.cn.nlg.model.JP;/** * Created by Administrator on 2017/6/8. */public class Animal extends JPFilm {    public void paly(){        System.out.println("this is Animal");    }}
package com.cn.nlg.model.JP;/** * Created by Administrator on 2017/6/8. */public class AVFilm extends JPFilm{    public void paly(){        System.out.println("this is AVFilm");    }}
package com.cn.nlg.model.JP;import com.cn.nlg.model.Film;/** * Created by Administrator on 2017/6/8. * */public class JPFilm implements Film{    public void paly(){        System.out.println("this is JPFilm");    }}

- 4.用@Bean在采用了@Configuration的类中愉快的使用注解声明Bean

package com.cn.nlg.BeanConfig;import com.cn.nlg.model.Film;import com.cn.nlg.model.JP.AVFilm;import com.cn.nlg.model.JP.Animal;import com.cn.nlg.model.JP.JPFilm;import com.cn.nlg.model.USA.USAFilm;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Lazy;/** * Created by Administrator on 2017/6/8. * */@Configurationpublic class FilmConfig {   //这个默认是true哦    @Lazy(false)    @Bean(name = "animal")    public Film animal(){          return new Animal();      };    @Bean(name = "avfilm")    public Film aVFilm(){        return new AVFilm();    };    @Bean(name ="jpfilm")    public Film aPFilm(){        return new JPFilm();    };    @Bean(name="usafilm")    public Film uSAFilm(){        return new USAFilm();    };    @Bean(name = "jpfilm")    public Film jpFile(){        return new JPFilm();    };}

-5当然,一个好的java程序肯定是少不了测试的,所以我们需要一个测试来试验一下是否可以运行.

现在我们来用一下junit测试一下Bean容器是否单例,是否可以运行

首先,我们得建立一个测试类,不妨就叫做:
TestSpringBeans.java

package com.cn.nlg;import com.cn.nlg.model.Film;import org.junit.Assert;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import javax.annotation.Resource;/** * Created by Administrator on 2017/6/8. */@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = "classpath:spring-config.xml")public class TestSpringBeans {    @Resource(name ="animal")    Film film1;    @Resource(name ="animal")    Film film2;    @Resource(name ="jpfilm")    Film film3;    @Resource(name ="avfilm")    Film film4;    @Resource(name ="usafilm")    Film film5;    @Test    public void testSignle() {        film1.paly();        film2.paly();;        film3.paly();        film4.paly();        film5.paly();        Assert.assertTrue(film1==film2 && film2!=film3 &&film3!=film4 && film5!=film2);    }}

由此测试类就完成了,点击运行,结果应该是成功的,
控制台应该会输出如下语句
this is Animal
this is Animal
this is JPFilm
this is AVFilm
this is USAFilm

end

当然,实际上spring是需要日志依赖的.
但是管这么多干嘛~

原创粉丝点击