注解方式可以简化spring的IOC容器的配置!
使用注解步骤:
1)先引入context名称空间
xmlns:context="http://www.springframework.org/schema/context"
2)开启注解扫描
<context:component-scanbase-package="cn.itcast.e_anno2"></context:component-scan>
3)使用注解
通过注解的方式,把对象加入ioc容器。
创建对象以及处理对象依赖关系,相关的注解:
@Component 指定把一个对象加入IOC容器
@Repository 作用同@Component; 在持久层使用
@Service 作用同@Component; 在业务逻辑层使用
@Controller 作用同@Component; 在控制层使用
@Resource 属性注入
下面是一个简单的注解的例子
1.bean.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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 开启注解扫描 --> <context:component-scan base-package="cn.itcast.e_anno"></context:component-scan> </beans> 2.UserService package cn.itcast.e_anno; import javax.annotation.Resource; import org.springframework.stereotype.Component; @Component("userService") public class UserService { @Resource(name="userDao") private UserDao userDao; // IOC:对象的创建交给spring的外部容器完成 public void setUserDao(UserDao userDao){ this.userDao=userDao; } public void save(){ userDao.save(); } } 3.UserAction package cn.itcast.e_anno; import javax.annotation.Resource; import org.springframework.stereotype.Component; @Component("userAction") public class UserAction { @Resource(name="userService") private UserService userService; public void setUserService(UserService userService){ this.userService=userService; } public String execute(){ userService.save(); return null; } } 4.UserDao package cn.itcast.e_anno; import org.springframework.stereotype.Component; //把当前对象加入ioc容器 @Component("userDao") public class UserDao { public void save(){ System.out.println("DB:保存用户"); } } 5.Junit测试 package cn.itcast.e_anno; import org.junit.Test; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; public class App { //创建容器对象 private ApplicationContext ac=new ClassPathXmlApplicationContext("cn/itcast/e_anno/bean.xml"); @Test public void testExcuteAction() throws Exception{ // 从容器中获取Action UserAction userAction=(UserAction) ac.getBean("userAction"); userAction.execute(); } }总结:
1) 使用注解,可以简化配置,且可以把对象加入IOC容器,及处理依赖关系(DI) 2) 注解可以和XML配置一起使用。