`

spring 注解Autowired、service、Autowired 的使用

阅读更多

在spring中可以通过service来把一个业务层的类交给spring窗口进行管理,而通过repository可以把持久层的类交给spring进行管理。今天只学习一下service交给spring进行管理。同时使用手功装配中的类型装配将字段值进行装配使用。

 

 

 

代码如下:

 

package cn.szzx.service;
/**
 *@author whp
 *@Email wanghaipeng@szzxbj.com
 *@2013-5-30
 *
 */
public interface Man {
	public void sayHello();
}

 

package cn.szzx.service.impl;

import org.springframework.stereotype.Service;

import cn.szzx.service.Man;

/**
 *@author whp
 *@Email wanghaipeng@szzxbj.com
 *@2013-5-30
 *
 */
@Service
public class American implements Man {

	@Override
	public void sayHello() {
		System.out.println("american say hello");
	}

}

 

package cn.szzx.service.impl;

import org.springframework.stereotype.Service;

import cn.szzx.service.Man;

/**
 *@author whp
 *@Email wanghaipeng@szzxbj.com
 *@2013-5-30
 *
 */
@Service
public class Chinese implements Man {
	@Override
	public void sayHello() {
		System.out.println("chinese say hello");
	}

}

 

package cn.szzx.test;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;

import cn.szzx.service.Man;

/**
 * @author whp
 * @Email wanghaipeng@szzxbj.com
 * @2013-5-30
 * 
 */
@Component
public class Main {
	@Autowired @Qualifier("chinese")
	private Man man;

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");   
        Main main = (Main) ctx.getBean("main");  
        main.getMan().sayHello();
        //System.out.println(main.getMan().sayHello()); 

	}

	public Man getMan() {
		return man;
	}

}

 

@Autowired @Qualifier("chinese")
	private Man man;

 在进行装配的时候,如果接口Man的实现只有Chinese,而没有American的话,那么就可以不使用注解@Qualifier,直接使用@Autowired。因为Autowired是根据类型装配,如果在这个程序里没有使用Qualifier,在注入时spring就会扫描出两个相同类型的接口实例,一个是Chinese的实现,一个是American的实现。这样程序就会报错。

 

 

beans.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-2.5.xsd   
           http://www.springframework.org/schema/context   
           http://www.springframework.org/schema/context/spring-context-2.5.xsd">
	<context:annotation-config />
	<context:component-scan base-package="cn.szzx.*" />
</beans>  

 

 

        <context:annotation-config />
	<context:component-scan base-package="cn.szzx.*" />

 在beans.xml文件中要打开自动扫描功能。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics