当前位置: 代码迷 >> Web前端 >> spring 透过注解 注入
  详细解决方案

spring 透过注解 注入

热度:809   发布时间:2012-09-06 10:37:01.0
spring 通过注解 注入

1. 需要在applicationContext.xml 启动注解注入的方式,添加配置选项,如下:

?

xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">

?完整的applicationContext.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:aop="http://www.springframework.org/schema/aop"
    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.0.xsd
http://www.springframework.org/schema/aop 
http://www.springframework.org/schema/aop/spring-aop-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="com.spring"/><!--自动搜索自定包下的类进行注解注入-->
</beans>

2. 对类进行注解注入

??

?? 如何对需要注解的类进行标识,分为两种方法:

?? (1). 通用方法:

?? @Component("别名")?

?? @Scope("prototype")??? //多例(默认是单例)

?? 通用方法对所有的类都可用,如action,service,dao,但是不推荐使用,因在这样不好区分,代码可读性不好。

?? (2).特殊类注解(这种方法是spring推荐的)

?? action??类:???? @Controller("别名")

?? service 类:??? @Service("别名")

?? dao????? 类:??? @Repository("别名")

?

?

3. 实例代码

??

?? UserAction:

package com.spring.action;

import javax.annotation.Resource;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.spring.dao.UserDao;
import com.spring.service.UserService;

@Controller("userAction")
@Scope("prototype")               //多例模式
public class UserAction {
	
	@Resource(name="userService") //通过注解得到UserService对象
	private UserService us;
	
	@Resource(name="UserDao")     //通过注解得到UserDao对象
	private UserDao dao;

	public void run(){
		System.out.println("UserAction running......");
		us.runService();
		dao.addUser("admin");
	}
}

?

? UserService:

package com.spring.service;

import org.springframework.stereotype.Service;

@Service("userService")
public class UserService {
	
	public void runService(){
		System.out.println("user service running......");
	}
}

?

UserDao:

package com.spring.dao;
import org.springframework.stereotype.Repository;

@Repository("UserDao")
public class UserDao {

	public void addUser(String username){
		System.out.println(username+"添加成功");
	}
}

?

?

  相关解决方案