Spring 使用注解完成bean实例化、依赖注入的相关配置以及注意事项

标签: Spring SSH
2人阅读 评论(0) 收藏 举报
分类:

一、 相关配置实例化注解介绍
首先使用注解完成spring容器实例的配置,主要用到以下几个:
1、@Repository(“name”):配置持久层实例bean,通常用在DAO; 这里配置的name属性相当于在
2、@Service(“”):业务层bean实例化,也即Service层相关类
3、@Controller(“”) :控制层bean实例,如:struts中的action
4、@Scope(“”):指定bean实例化的模式,常用属性,单例(singleton),多例(prototype);另外,还有session,request
5、@Component(“”):用于人任意类的实例化配置,不如上边几种有那么强的语义。
2. 依赖注入相关注解
1、@Autowired:为依赖属性实现注入依赖实例,但是存在以一种情况使用该标签会出错——当一个容器中,存在多个同类型单例模式的bean实例,autowrired会因无法确定应该注入哪个实例而报错类似于:expected single matching bean but found 3 。

下面举个简单的例子:

下面代码为两个有依赖关系且要实例化的bean

@Controller("customerAction")
public class CustomerAction extends ActionSupport {
    @Autowired    //指定属性依赖注入对象
    //@Qualifier("customerService1")
    private CustomerService customerService; 

    //.......
}
/////////////////////////////////////////////////////
@Service
public class CustomerServiceImpl implements CustomerService {
//........
}

此时,在spring中人为的配置了如下bean实例

<bean id="customerService1" class="cn.ppppp.crm.service.impl.CustomerServiceImpl"> <!-- 这里配置为单例 -->
    </bean>
    <bean id="customerService2" class="cn.ppppp.crm.service.impl.CustomerServiceImpl"> <!-- 这里配置为单例 -->
    </bean>

2、@Qualifier(“customerService1”):配合Autowired使用,如Action中被注释语句,解决上述问题,属性指定需要用哪个实例来注入依赖属性。附,另一种解决方法:以上面例子,当指定@Service(“customerService”)的name属性时也不会出现以上错误。我的理解是,框架在加载的时候在没有指定实例化bean对象,首先加载由注解完成的实例。
二、使用的注解完成bean实例化的环境配置(注:STS IDE)
1、添加jar包:spring-aop-4.2.4.RELEASE.jar

2、Spring容器applicationContext.xml:

<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.xsd
         http://www.springframework.org/schema/context
         http://www.springframework.org/schema/context/spring-context.xsd">

</beans>

同时在做以下配置window>preferences>xml catalog>
这里写图片描述
location:为本地xsd文件路径
容器扫描组件,完成对注解的加载

<!-- 
        扫描@Reposotory,@Service,@Controler,@Scope注解
        base-package: 指定扫描范围,即base-package目录下子包,或文件
     -->
    <context:component-scan base-package="cn.pppp.crm"></context:component-scan>
    <!-- 对依赖属性注入使用注解 -->
    <context:annotation-config></context:annotation-config>
查看评论

spring3.2入门到大神(备java基础、jsp、servlet,javaee精髓)

框架介绍,IoC思想、DI依赖注入、Bean的实例方式、Bean种类、Bean作用域范围、Bean生命周期管理、依赖注入、注解装配Bean、整合Junit测试、WEB开发集成spring、AOP思想、AOP原理解剖、spring 传统aop开发、JdbcTemplate模板使用、C3P0数据源配置、声明式事务管理、注解事务管理。SSH xml整合、SSH注解整合。
  • 2016年07月31日 17:59

Spring 学习笔记1--三种实例化Bean方法、注解

首先通过一个简单的程序学习Spring在程序中的运用。 定义一个接口: package com.spring.interfacebean; public interface Perso...
  • douzizuibang
  • douzizuibang
  • 2014-11-27 22:22:35
  • 1563

maven-spring-ioc

  • 2017年08月07日 14:46
  • 12KB
  • 下载

[4]Spring以注解的方式进行Bean的实例化和属性注入

在进行Spring开发时所需要的基础jar包有:当需要在Spring中使用注解的时候,还需要导入在配置文件中引入新的约束: ...
  • qq_19560943
  • qq_19560943
  • 2017-06-23 14:33:34
  • 5579

Java - Spring中如何使用注解来配置Bean?有哪些相关的注解?

首先需要在Spring配置文件中增加如下配置: 然后可以用@Component、@Controller、@Service、@Repository注解来标注需要由Spring IoC容器进行对象托管的...
  • chimomo
  • chimomo
  • 2017-11-09 09:52:41
  • 436

[转]Spring依赖注入和实例化(new)的差别

Spring依赖注入和实例化(new)的差别。 Sping为什么使用依赖注入而不使用实例化对象的方式? 首先说明一下概念 依赖注入(Dependency of Injection)和...
  • mrli113
  • mrli113
  • 2017-04-26 11:44:23
  • 2195

Spring通过注解配置bean

简介及测试  Spring支持通过注解的方式来配置bean实例。Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件。特定组件包括:   @Component:基本注解,标...
  • xiangwanpeng
  • xiangwanpeng
  • 2016-12-25 11:38:13
  • 1075

spring ioc中实例化bean以及依赖注入bean和基本类型属性简单实现方案

Spring两个重要特性IOC和AOP,本文中简单实现bean的创建以及属性依赖注入。 实现步骤如下: 1、通过dom4j解析bean.xml文件,将bean对象以及依赖属性装入List。 2、遍历l...
  • ocean_fan
  • ocean_fan
  • 2017-10-10 11:50:38
  • 228

Spring 3.0 学习-DI 依赖注入_创建Spring 配置-使用一个或多个XML 文件作为配置文件,使用自动注入(byName),在代码中使用注解代替自动注入,使用自动扫描代替xml中bea

创建Spring 配置-使用一个或多个XML 文件作为配置文件,使用自动注入(byName),在代码中使用注解代替自动注入,使用自动扫描代替xml中bean的声明...
  • bestcxx
  • bestcxx
  • 2016-09-22 15:14:19
  • 4326

依赖注入之Bean实例化前的准备

IOC容器虽然已经构造好,但现在的容器只是一个壳,对象间的依赖关系还未进行填充。那么接下来便分析填充依赖关系的过程,即依赖注入。依赖注入主要有两个过程,一个是实例化Bean,另一个是将依赖关系注入到B...
  • jzq114
  • jzq114
  • 2016-03-08 22:51:40
  • 999
    个人资料
    等级:
    访问量: 33
    积分: 32
    排名: 195万+
    文章分类
    文章存档