从Spring3的文档说明中可以知道,@Service、@Repository、@Controller、@Componet都是指的同一种意思,分成这么几种,主要是为了便于区分理解业务逻辑与数据分离时所表示的层次(如业务逻辑层、控制层、数据存取层),其实都是@Componet。
UserDAO.java
package com.bebig.dao;

import com.bebig.model.User;

//Data Access Object数据访问接口
public interface UserDAO {
    
public void save(User u);
}

UserDAOImpl.java
package com.bebig.dao.impl;

import org.springframework.stereotype.Repository;
import com.bebig.dao.UserDAO;
import com.bebig.model.User;

//将要注入的对象
@Repository
public class UserDAOImpl implements UserDAO {

    @Override
    
public void save(User u) {
        System.out.println(
"a user saved!");
    }


}

User.java
package com.bebig.model;

public class User {
    
private String username;
    
private String password;

    
public String getPassword() {
        
return password;
    }


    
public String getUsername() {
        
return username;
    }


    
public void setPassword(String password) {
        
this.password = password;
    }


    
public void setUsername(String username) {
        
this.username = username;
    }

}

UserService.java
package com.bebig.service;

import javax.annotation.Resource;
import org.springframework.stereotype.Service;

import com.bebig.dao.UserDAO;
import com.bebig.model.User;

@Service(
"userService")
public class UserService {
    
private UserDAO userDAO;

    
public void add(User u) {
        userDAO.save(u);

    }


    @Resource
    
public void setUserDAO(UserDAO userDAO) {
        
this.userDAO = userDAO;
    }


    
public UserDAO getUserDAO() {
        
return userDAO;
    }


    
public void init() {
        System.out.println(
"init.");
    }


    
public void destory() {
        System.out.println(
"destory.");
    }

}

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-3.0.xsd
http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd"
>

    
<!-- a service object; we will be profiling its methods -->
    
<context:annotation-config />
    
<!-- 自动扫描指定包下面的所有对象 -->
    
<context:component-scan base-package="com.bebig" />

</beans>
UserServiceTest.java
package com.bebig.service;

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

import com.bebig.model.User;

public class UserServiceTest {

    @Test
    
public void testAdd() throws Exception {
        ApplicationContext cxt 
= new ClassPathXmlApplicationContext("beans.xml");

        UserService service 
= (UserService) cxt.getBean("userService");

        User u 
= new User();
        u.setUsername(
"Don");
        u.setPassword(
"123");
        service.add(u);
    }


}

 

1.     Component @Service @Controller @Repository

a)     初始化的名字默认为类名首字母小写

b)     可以指定初始化bean的名字