美文网首页java学习笔记整理JavaEE 学习专题Java学习笔记
Spring--IOC容器——对象依赖关系(注解)

Spring--IOC容器——对象依赖关系(注解)

作者: Mr_欢先生 | 来源:发表于2017-06-25 10:20 被阅读113次

注解方式可以简化spring的IOC容器的配置!

使用注解步骤:

  • 1)先引入context名称空间
    xmlns:context="http://www.springframework.org/schema/context"
  • 2)开启注解扫描
    <context:component-scan base-package="cn.itcast.e_anno2"></context:component-scan>
  • 3)使用注解
    通过注解的方式,把对象加入ioc容器。
    创建对象以及处理对象依赖关系,相关的注解:
    @Component指定把一个对象加入IOC容器
    @Repository作用同@Component; 在持久层使用
    @Service 作用同@Component; 在业务逻辑层使用
    @Controller作用同@Component; 在控制层使用
    @Resource属性注入

总结:
1) 使用注解,可以简化配置,且可以把对象加入IOC容器,及处理依赖关系(DI)
2) 注解可以和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="com.huan"></context:component-scan>

</beans>

UserDao.java

package com.huan.BeanTest;

import org.springframework.stereotype.Component;

/**
 * Created by 马欢欢 on 2017/6/24.
 */
@Component("userDao") //相当于 bean.xml[<bean id =userDao class="com.huan.BeanTest.UserDao">]
public class UserDao {
    public void save(){
        System.out.println("db:操作数据库");
    }
}

UserService.java

package com.huan.BeanTest;

import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * Created by 马欢欢 on 2017/6/24.
 */
@Component("userService")//userService对象,注入到ioc容器
public class UserService {
    //从IOC容器中找到userDao对象,注入到当前字段
    /**
     * <bean id =userDao class="com.huan.BeanTest.UserDao">
     *  <property name = "userDao" ref ="userDao" ></property> 相当于 @Resource(name = "userDao")
     *
     *  </bean>
     */
    @Resource(name = "userDao")
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    public void save(){
        userDao.save();
    }
}

UserAction.java

package com.huan.BeanTest;

import org.springframework.stereotype.Component;


import javax.annotation.Resource;

/**
 * Created by 马欢欢 on 2017/6/24.
 */
@Component("userAction")
public class UserAction {
    @Resource(name = "userService")
    private UserService userService;
    public void execute(){
        userService.save();
    }
}


创建user对象

 @Test
    public void test2(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
        UserAction userAction = (UserAction) applicationContext.getBean("userAction");
        userAction.execute();
方法二

注解:

<?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="com.huan"></context:component-scan>

</beans>

UserDao.java

package com.huan.BeanTest;

import org.springframework.stereotype.Component;

/**
 * Created by 马欢欢 on 2017/6/24.
 */
@Component
public class UserDao {
    public void save(){
        System.out.println("db:操作数据库zui");
    }
}


UserService.java


package com.huan.BeanTest;

import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * Created by 马欢欢 on 2017/6/24.
 */
@Component
public class UserService {
    
    @Resource//根据类型查找·[在容器中,该类型只有一个变量]
    private UserDao userDao;
    public void save(){
        userDao.save();
    }
}

UserAction.java

package com.huan.BeanTest;

import org.springframework.stereotype.Component;


import javax.annotation.Resource;

/**
 * Created by 马欢欢 on 2017/6/24.
 */
@Component
public class UserAction {
    @Resource
    private UserService userService;
    public void execute(){
        userService.save();
    }
}

创建user对象

 @Test
    public void test2(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
        UserAction userAction = (UserAction) applicationContext.getBean("userAction");
        userAction.execute();
方法三

注解:

<?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="com.huan"></context:component-scan>

</beans>

UserDao.java

package com.huan.BeanTest;

import org.springframework.stereotype.Repository;

/**
 * Created by 马欢欢 on 2017/6/24.
 */
@Repository
public class UserDao {
    public void save(){
        System.out.println("db:操作数据库zui");
    }
}



UserService.java


package com.huan.BeanTest;

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * Created by 马欢欢 on 2017/6/24.
 */
@Service
public class UserService {

    @Resource
    private UserDao userDa;
    public void save(){
        userDa.save();
    }
}

UserAction.java

package com.huan.BeanTest;

import org.springframework.stereotype.Controller;

import javax.annotation.Resource;

/**
 * Created by 马欢欢 on 2017/6/24.
 */
@Controller
public class UserAction {
    @Resource
    private UserService userService;
    public void execute(){
        userService.save();
    }
}

创建user对象

 @Test
    public void test2(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
        UserAction userAction = (UserAction) applicationContext.getBean("userAction");
        userAction.execute();
image.png

上一篇:Spring--IOC容器——对象依赖关系(构造函数、set方法、p名称空间、自动装配)

文集:Spring框架学习

相关文章

  • Spring--IOC容器——对象依赖关系(注解)

    注解方式可以简化spring的IOC容器的配置! 使用注解步骤: 1)先引入context名称空间xmlns:co...

  • Spring--IOC容器——对象依赖关系(构造函数、set方法

    一.对象的依赖关系: Spring中,如何给对象的属性赋值? 【DI, 依赖注入】1) 通过构造函数2) 通过s...

  • 使用注解装配bean

    注解 spring容器对于Bean的创建和对象属性的依赖注入提供了注解的支持,让我们在开发中能够更加便捷的实现对象...

  • @Resource和@Autowired区别

    ======> 区别1.@Autowired:注解是按照类型装配依赖对象关系,默认情况系,它要求依赖对象必须存存在...

  • Spring--IOC容器——对象创建

    一.IOC容器--spring 是spring核心内容。作用: 创建对象 和 处理对象的依赖关系 二.IOC容器创...

  • 注解

    依赖注入的注解的原理: 1、当启动spring容器的时候,创建两个对象2、当spring容器解析到 spring容...

  • Spring IOC

    什么是控制反转(IOC),什么是依赖注入(DI)? IOC:就是对象之间的依赖关系由容器来创建,对象之间的关系本来...

  • Spring技术内幕(一):IOC容器

    原理:依赖反转模式 合作对象的引用或依赖关系的管理交由容器或平台来完成,而不是具体的对象。 IOC容器接口体系 实...

  • spring 学习

    依赖注入(DI)和控制翻转(IOC) 依赖注入在书上说的是容器负责创建对象和维护对象间的依赖关系,而不是通过对象...

  • 1.依赖注入

    依赖注入指的是容器负责创建对象和维护对象之间的依赖关系,而不是通过对象本身负责自己的创建和解决自己的依赖 依赖注入...

网友评论

    本文标题:Spring--IOC容器——对象依赖关系(注解)

    本文链接:https://www.haomeiwen.com/subject/eyxlcxtx.html