1. Spring提供如下几个Annotation来标注Spring Bean。
@Component:标注一个普通的Spring Bean
@Controller:标注一个控制器组件类
@Service:标注一个业务逻辑组件类
@Repository:标注一个DAO组件类
2. 实体:
package com.huey.entity;
public class Entity {
public Entity() {
}
}
3. DAO接口:
package com.huey.dao;
import com.huey.entity.Entity;
/**
* DAO层接口
* @author Huey2672
*
*/
public interface EntityDao {
/**
* 添加实体
* @param entity
*/
public void addEntity(Entity entity);
/**
* 删除实体
* @param entity
*/
public void deleteEntity(Entity entity);
/**
* 更新实体
* @param entity
*/
public void updateEntity(Entity entity);
}
4. DAO实现:
package com.huey.dao.impl;
import org.springframework.stereotype.Repository;
import com.huey.dao.EntityDao;
import com.huey.entity.Entity;
/**
* DAO层实现
* @author Huey2672
*
*/
@Repository("entityDao")
public class EntityDaoImpl implements EntityDao {
/**
* 添加实体
* @param entity
*/
public void addEntity(Entity entity) {
System.out.println("Add Entity");
}
/**
* 删除实体
* @param entity
*/
public void deleteEntity(Entity entity) {
System.out.println("Delete Entity");
}
/**
* 更新实体
* @param entity
*/
public void updateEntity(Entity entity) {
System.out.println("Upadte Entity");
}
}
5. Service接口:
package com.huey.service;
import com.huey.entity.Entity;
/**
* Service层接口
* @author Huey2672
*
*/
public interface EntityServ {
/**
* 添加实体
* @param entity
*/
public void addEntity(Entity entity);
/**
* 删除实体
* @param entity
*/
public void deleteEntity(Entity entity);
/**
* 更新实体
* @param entity
*/
public void updateEntity(Entity entity);
}
6. Service实现:
package com.huey.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.huey.dao.EntityDao;
import com.huey.entity.Entity;
import com.huey.service.EntityServ;
/**
* Service层实现
* @author Huey2672
*
*/
@Service("entityServ")
public class EntityServImpl implements EntityServ {
// 自动装配
@Autowired
private EntityDao entityDao;
public EntityDao getEntityDao() {
return entityDao;
}
public void setEntityDao(EntityDao entityDao) {
this.entityDao = entityDao;
}
/**
* 添加实体
* @param entity
*/
public void addEntity(Entity entity) {
entityDao.addEntity(entity);
}
/**
* 删除实体
* @param entity
*/
public void deleteEntity(Entity entity) {
entityDao.deleteEntity(entity);
}
/**
*更新实体
* @param entity
*/
public void updateEntity(Entity entity) {
entityDao.updateEntity(entity);
}
}
7. Spring配置文件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: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">
<!-- 自动扫描指定包及其子包下的所有Bean类 -->
<context:component-scan base-package="com.huey"/>
</beans>
8. 测试用例:
package com.huey.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.huey.service.EntityServ;
import com.huey.service.impl.EntityServImpl;
/**
* 测试用例
* @author Huey2672
*
*/
public class SpringTest {
@Test
public void testIoc() throws Exception {
// 创建Spring容器
ApplicationContext appCtx =
new ClassPathXmlApplicationContext("applicationContext.xml");
// 通过容器获得EntityServ的实例
EntityServ entityServ = appCtx.getBean("entityServ", EntityServImpl.class);
entityServ.addEntity(null);
entityServ.deleteEntity(null);
entityServ.addEntity(null);
}
}
9. 结果输出:
Add Entity
Delete Entity
Add Entity