@Bean功能提供了在Java类中声明Bean的方式,减少了xml文件的配置,可以极大的减少xml文件的臃肿程度.,为们得确认我们的开发环境,由于只是测试一下功能,所以需要的环境为Jdk1.8,Maven,Idea
为此 我们需要做的是
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> ```配置文件就起名为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.xsd http://www.springframework.org/schema/util http://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>根据以上信息,建立起如下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"); } }现在我们来用一下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
当然,实际上spring是需要日志依赖的. 但是管这么多干嘛~
