IOC容器注解方式详细解析

    xiaoxiao2025-04-20  5

    注解方式可以简化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配置一起使用。

    转载请注明原文地址: https://ju.6miu.com/read-1298273.html
    最新回复(0)