以下记录了一个小小的Spring3的annotation的应用笔记。

文件列表:

UserService-interface

UserDao-interface

UserServiceImpl-UserService接口的实现

UserDaoImpl-UserDao接口的实现

User-实体类

package com.niewj.model;

public class User {

	private String name;

	public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}
package com.niewj.service;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service; import com.niewj.dao.LogDao;
import com.niewj.dao.UserDao;
import com.niewj.model.User; @Service("userServiceImplementation")
// @Component/@Repository/@Controller/@Service
@Scope("singleton")
// @Scope("prototype")
public class UserServiceImpl implements UserService { //  也可以此处声明,也可以在setter处声明。
/*    @Autowired
    @Qualifier("userDaoImplementation")*/
    //@Resource(name="userDaoImplementation")// 不指定的话,他会找setter方法,最后可以会退到,找byType匹配。
    private UserDao uuuserDao;     
    private LogDao logDao;     public UserDao getUuuserDao() {
        return uuuserDao;
    }     /*
    @Autowired// (required=false)
    @Qualifier("userDaoImplementation")// id/name
     */
    @Resource(name="userDaoImplementation")
    public void setUuuserDao(UserDao uuuserDao) {
        this.uuuserDao = uuuserDao;
    }     public LogDao getLogDao() {
        return logDao;
    }     @Autowired
    public void setLogDao(LogDao logDao) {
        this.logDao = logDao;
    }     @Override
    public boolean regist(User user) {
        logDao.log();
        return uuuserDao.save(user);
    }
}
package com.niewj.dao;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy; import org.springframework.stereotype.Repository; import com.niewj.model.User; /* @Repository/@Controller/@Service都属于@Component,只是为了更明显的标注业务层、控制层、还是Dao层 */ @Repository("userDaoImplementation")
public class UserDaoImpl implements UserDao {     @PostConstruct// 相当于<bean init-method="init">
    public void init(){
        System.err.println("实例化DAO后,会马上调用此方法。");
    }     @PreDestroy//相当于<bean destroy-method="destroy">
    public void destroy(){
        System.err.println("销毁DAO之前,会执行此方法。");
    }
    
    @Override
    public boolean save(User user) {
        System.err.println("新增用户:" +user.getName());
        return true;
    }
}
package com.niewj.dao;

import org.springframework.stereotype.Repository;

@Repository("logDao")
public class LogDaoImpl implements LogDao { @Override
public void log() {
System.out.println("Logging......记录在日志............OK");
}
}
package com.niewj;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.niewj.model.User;
import com.niewj.service.UserService;
import com.niewj.service.UserServiceImpl; public class AnnotationTest {
    @Test
    public void testIocAnnotation() {
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService loginService = ac.getBean("userServiceImplementation", UserServiceImpl.class);
        
        User user = new User();
        user.setName("dotjar");
        loginService.regist(user);
    }
}
<?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:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <import resource="beans.xml" /> </beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:tx="http://www.springframework.org/schema/tx"
    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/tx   
    http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.2.xsd">     
    <!-- 开启Annotation支持 如果有context:component-scan可以省去此处声明-->
    <!-- <context:annotation-config /> -->
    
    <context:component-scan base-package="com.niewj">
    </context:component-scan>
</beans>

1.UserServiceImpl中的@Service中的字串应该和getBean中的一致;

2.UserDaoImpl中的@Repository中参数应该和UserServiceImpl中Setter方法处的@Autowired@Qualifier("dao参数")一致

3.配置文件中开启注解支持:

*1.配置文件中开启context命名空间支持:<beans>标记中加入:
        <1>加入【xmlns】:【xmlns:context="http://www.springframework.org/schema/context"】
        <2>加入【xsi:schemaLocation】:
        【http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.2.xsd】
   
    *2.配置文件中开启注解支持:
        <context:annotation-config />

*3.因为有<context:component-scan>所以,  <context:annotation-config />可以省去。

小结:

1.

 @Repository/@Controller/@Service都属于@Component,只是为了更明显的标注业务层、控制层、还是Dao层

2.

@Resource(name="userDaoImplementation")// 不指定name的话,他会找setter方法,按照byName找不到,最后可以byType匹配。

3.

 @Autowired // byType自动装配
 @Qualifier("userDaoImplementation") //byName,必须有@Autowired同时出现。

最新文章

  1. java动态调用webservice
  2. django 技巧锦集
  3. OAuth2.0认证和授权原理
  4. [转]oracle odp.net 32位/64位版本的问题
  5. Null Pointer --设计模式
  6. 使用AVCaptureSession捕捉静态图片
  7. shouldOverrideUrlLoading相关说明
  8. java_model_dao_自动生成_generator-mybatis-generator-1.3.2 基于maven插件
  9. [Unity AssetBundle]Asset资源处理
  10. Qt入门之基础篇(三):掌握Qt4的静态编译基本方法
  11. 王者荣耀是怎样炼成的(二)《王者荣耀》unity安装及使用的小白零基础入门
  12. Bandwagon的配置记录(一) —— kexue上网
  13. Nginx配置:nginx如何配置跳转fpm
  14. gulp插件实现压缩一个文件夹下不同目录下的js文件(支持es6)
  15. 修改sqlserver的数据库名、物理名称和逻辑文件名
  16. Linux 4.20内核得到更新,英特尔CPU 性能降低50%
  17. (转载)winform图片标尺控件
  18. psycopg使用
  19. linux命令(52):usermod 修改账户信息,groupmod
  20. VS2015 中使用 MVC4

热门文章

  1. activiti 流程部署 保存流程图到数据库 保存二进制图片 存储失败
  2. MySQL 8 新特性之Clone Plugin
  3. 深入理解RabbitMQ中的prefetch_count参数
  4. selenium 图片懒加载
  5. TNS-12541 TNS no listener
  6. 在电脑上操作手机屏幕scrcpy工具就搞定了
  7. IDEA Cannot resolve plugin org.apache.maven.plugins:maven-site-plugin:3.8.2-plugin爆红错误
  8. 用 Span 对 C# 进程中三大内存区域进行统一访问 ,太厉害了!
  9. pyqt5屏幕坐标系
  10. windows下nginx中配置端口转发 ----本文来自转载