spring注解方式配置以及spring4的泛型注入 (4)


首先,在用注解之前,先在配置文件中加入以下配置,在base-package下自動掃描目錄及子目錄的注解 ,具體可以下載我的代碼查看,下文有連接

<context:component-scan base-package="com.hp.spring"></context:component-scan>

一、@Controller 注解控制層(action)

@Controller
public class UserAction {
    
    @Autowired
    private UsreService usreService; 
} 

其中@Autowired 注入依賴,此外,@Resource和@Inject注解與@Autowired 類似

二、@Service 注解服務層

@Service
public class UsreService {
    
    @Autowired
    private UserDao userDao;  
}

三、@Repository 持久層

@Repository
public class UserDao {
} 

四、spring4的泛型注入測試

1 創建兩個實體User和Role

public class User {
} 

public class Role {
} 

2 baseDao抽取泛型基礎curd

public class BaseDao<T> {
    public void save(T entity){
        System.out.println("Save:" + entity);
    }
}

3 兩個實現類UserDao 和 RoleDao

@Repository
public class RoleDao extends BaseDao<Role>{
} 

@Repository
public class UserDao extends BaseDao<User>{
} 

4 baseService

public class BaseService<T> {
    @Autowired
    private BaseDao<T> dao;//這里會自動根據實際類型傳入User或Role
    
    public void addNew(T entity){
        System.out.println("addNew by " + dao);
        dao.save(entity);
    }
}

5 UserService 和RoleService

@Service
public class RoleService extends BaseService<Role>{
} 

//若注解沒有指定 bean 的 id, 則類名第一個字母小寫即為 bean 的 id
@Service
public class UserService extends BaseService<User>{
} 

6 測試類

    public static void main(String[] args) {
        
        ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-annotation.xml");
        
        UserService userService = (UserService) ctx.getBean("userService");
        userService.addNew(new User());
        
        RoleService roleService = (RoleService) ctx.getBean("roleService");
        roleService.addNew(new Role()); 
    }  

整個系列項目代碼: http://git.oschina.net/nmc5/spring


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM