Spring3的IOC的annotation学习笔记
来源:互联网 发布:转运公司推荐 知乎 编辑:程序博客网 时间:2024/06/10 08:45
以下记录了一个小小的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 {@Overridepublic 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同时出现。
- Spring3的IOC的annotation学习笔记
- 基于annotation注解的Spring3 MVC之一 HelloWorld 例子学习笔记
- 基于annotation注解的Spring3 MVC Form Handling Example之二表单提交学习笔记
- 基于annotation注解的Spring3 MVC Page Redirection Example之三页面重定向学习笔记
- 基于annotation注解的Spring3 MVC Static Pages Example之四静态页面向学习笔记
- Java 学习笔记05:Spring 基于注解(Annotation)的IOC
- Spring3.0的Annotation注解
- spring3.0 aop的annotation实现切面,新手学习
- spring的IOC基于annotation
- spring的IOC基于annotation
- Spring IOC 的 Annotation 简析
- spring3笔记2-IOC
- 学习Spring3.0的笔记(杂)
- Spring3之 IoC容器的实例化
- Spring3 -- IOC容器的基本原理 02
- Spring3 学习笔记之(spring core 之IoC基础)
- Spring3 学习笔记之(spring core 之IoC配置使用)
- Spring3.X学习笔记1-IoC容器概述
- ie6下ul下的li不自动换行
- LazyLoad思想
- 黑马程序员--Java环境变量的配置
- java读取资源文件
- 【转】linux自测题
- Spring3的IOC的annotation学习笔记
- js键盘事件
- 继承基础--成员变量的静态绑定和方法的动态绑定-测试
- 连接池
- Wiki系统搭建
- hibernate3.6-联合主键注解以及openSession和getCurrentSession区别
- python文档自译:os模块-01【说明部分】
- 狂潮(部分)
- MySQL数据库的优化(上)单机MySQL数据库的优化