您的位置:首页 > 编程语言 > Java开发

简单使用Spring注解 测试程序 非web程序

2016-01-06 14:11 519 查看
前些时间一直在做前端,框架方面的知识都有些生疏,所以准备下笔记录一下,方便以后使用

首先就是研究一下Spring注解方面的知识。

我先使用的是非web程序,直接使用IDE(eclipse) 建立一个java project

引入spring 的jar包 以及commons - logging .jar

我用的是spring3.10

spring2.5以上的版本应该都可以使用本程序

spring官方下载地址是
http://repo.springsource.org/libs-release-local/org/springframework/spring/
接着呢创建spring配置文件

文件名为XXX.xml

XXX随意英文即可

<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-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> 
<context:component-scan base-package="com.importnew" />

</beans>


<span style="font-size:24px;"><context:component-scan base-package="com.importnew" />
这句话的意思是自动扫描base-package包下的所有带有注解的bean</span>


接着创建helloworld文件 HelloWorld.java

包为com.importnew

package com.importnew;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class HelloWorld {

private String message;

public void setMessage(String message){
this.message  = message;
}

public String getMessage(){
return this.message;
}

public void printMessage(){
System.out.println("hello world");

}
}


再创建MainApp.java package com.importnew;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApp {
public static void main(String[] args) {

ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

HelloWorld obj = (HelloWorld) context.getBean("helloWorld");

obj.printMessage();
}
}

直接运行就可以得到我们要的结果 hello world

@Component此注解 就代表着 这个类被spring 扫描 并且变为了bean

我们再创建一个类 Car.java

package com.importnew;

import org.springframework.stereotype.Component;

@Component
public class Car {
private int value = 100;

public int getValue() {
return value;
}

public void setValue(int value) {
this.value = value;
}

}


我们设置一个属性
<pre name="code" class="java">private int value = 100;



我们想得到这个值 但不想 通过new的方式 同样不希望用 get set 的方式  应该怎么样做呢

只需要在HelloWorld.java 中加入一行代码

@Autowired private Car car;再加入一行输出语句
System.out.println("Your Message : " + car.getValue());

输出就变为了Your Message :100

通过<span style="font-size:24px;">@Autowired</span>我们就将 car 装备到了属性中

那么如果给的类型是父类,注解装备的是子类,可以成功么?

是可以的。

如果子类父类都进行了装配,注入的是子类还是父类?

是父类

如果给的是接口,装配的是实现类,可以成功么?

也是可以的。

但是如果有两个类实现了接口那么会注入哪一个实现类?

当然会报错啦、
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring 框架 web 测试 java