http://blog.csdn.net/p_3er/article/details/9231307

1、命名空间

使用Annotation的方式,需要在spring的配置文件中配置命名空间。命名空间中,隐式地注册了多个对注解进行解析处理的处理器。

a、引入context命名空间

  1. <beans
  2. xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:p="http://www.springframework.org/schema/p"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context-3.0.xsd">

b、打开注解功能

  1. <context:annotation-config />

2、@Autowired与@Resource

@Autowired与@Resource在使用上是没有任何区别的。即可以放于属性声明之前,也可以放于属性的setter方法头上。

只是@Autowired注解是由Spring提供的,它是按类型进行装配。而@Resource是由JavaEE提供的,它是按属性的名字进行装配,找不到名字后再找类型按类型装配。

@Autowired是推荐使用的。

3、具体使用:

UserDao与UserDaoImpl:

  1. public interface UserDao {
  2. public void save();
  3. }
  1. public class UserDaoImpl implements UserDao {
  2. public void save() {
  3. System.out.println("保存用户...");
  4. }
  5. }

UserService接口及其实现类UserServiceImpl:

  1. public interface UserService {
  2. public void addUser();
  3. }

在UserServiceImpl中使用注解把UserDao对象注入进来使用。

  1. public class UserServiceImpl implements UserService {
  2. //1
  3. @Autowired private UserDao userDao;
  4. public UserServiceImpl(UserDao userDao, String username) {
  5. this.userDao = userDao;
  6. this.username = username;
  7. }
  8. public void addUser() {
  9. System.out.println(username);
  10. userDao.save();
  11. }
  12. }

在上面注释1的地方还可以替换成以下几种方式:

  1. @Autowired
  2. public void setUserDao(UserDao userDao) {
  3. this.userDao = userDao;
  4. }
  1. @Resource private UserDao userDao;
  1. @Resource
  2. public void setUserDao(UserDao userDao) {
  3. this.userDao = userDao;
  4. }

配置文件:

  1. <beans
  2. xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:p="http://www.springframework.org/schema/p"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context-3.0.xsd">
  10. <context:annotation-config />
  11. <!--  配置文件中,UserDaoImpl与UserServiceImpl是相互对立,没有任何关系的。-->
  12. <bean id="userDao" class="cn.framelife.spring.dao.impl.UserDaoImpl"></bean>
  13. <bean id="userService" class="cn.framelife.spring.service.impl.UserServiceImpl"></bean>
  14. lt;beans>

4、注意:

1、使用注解功能,必须是JDK5.0及以上版本。

2、一般来说,基本数据类型的属性不使用Annotation的方式注入,Annotation只用于Bean的装配。而且,如果不是必须,基本数据类型的属性一般不使用注入的方式。

转: 第二章 IoC Annotation注入的更多相关文章

  1. 第二章 IoC Setter注入

    Setter注入又称为属性注入.是通过属性的setXXX()方法来注入Bean的属性值或依赖对象.由于Setter注入具有可选择性和灵活性高的优点,因此Setter注入是实际应用中最常用的注入方式. ...

  2. Spring3实战第二章第二小节 IOC依赖注入 list和map集合

    Spring有多种依赖注入的形式,本篇文章仅介绍Spring通过xml进行IOC配置的方式. 1.Set注入 2.构造器注入 平常的Java开发中,程序员在某个类中需要依赖其它类的方法. 通常是new ...

  3. 第二章 IOC + AOP 底层原理

    <精通Spring4.x 企业应用开发实战>读书笔记 一.概念 IOC: 假设B类调用了A类,那么A类的对象的创建是由B类来实现: IOC是指将A对象的创建由容器来完成,并且将创建好的对象 ...

  4. 第二章 IoC

    什么是IoC 如何配置IOC Bean的生命周期 多环境配置 条件化配置Bean 什么是IOC? IOC有两层含义, 1.控制反转:将对象实例的创建与销毁的权限交给Spring容器管理,而不再是调用对 ...

  5. SPRING IN ACTION 第4版笔记-第二章-003-以Java形式注入Bean、@Bean的用法

    1. package soundsystem; import org.springframework.context.annotation.Bean; import org.springframewo ...

  6. 《Spring技术内幕》笔记-第二章 IoC容器的实现

    简单介绍 1,在Spring中,SpringIoC提供了一个主要的JavaBean容器.通过IoC模式管理依赖关系.并通过依赖注入和AOP切面增强了为JavaBean这样子的POJO提供事务管理,生命 ...

  7. Spring 3.x 实践 第一个例子(Spring 3.x 企业应用开发实战读书笔记第二章)

    前言:工作之后一直在搞android,现在需要更多和后台的人员交涉,技术栈不一样,难免鸡同鸭讲,所以稍稍学习下. 这个例子取自于<Spring 3.x 企业应用开发实战>一书中的第二章,I ...

  8. Java开发工程师(Web方向) - 04.Spring框架 - 第2章.IoC容器

    第2章.IoC容器 IoC容器概述 abstract: 介绍IoC和bean的用处和使用 IoC容器处于整个Spring框架中比较核心的位置:Core Container: Beans, Core, ...

  9. Android艺术开发探索——第二章:IPC机制(下)

    Android艺术开发探索--第二章:IPC机制(下) 我们继续来讲IPC机制,在本篇中你将会学习到 ContentProvider Socket Binder连接池 一.使用ContentProvi ...

随机推荐

  1. 成功为Android系统配上了GNU开发环境

             单击此处获得本文的最新更新 经过一周的艰苦努力,成功为我的小米2手机适配上了全功能的GNU开发环境,完全兼容GNU/LINUX(Android自带的bionic.linker真心不好 ...

  2. linux内核函数之 blk_plug

    分析: /* * blk_plug permits building a queue of related requests by holding the I/O * fragments for a ...

  3. LAN路由

    一.实验的目的:   实现不同子网之前的信息交流      二.如果 1.虚拟子网 VMnet8:192.168.233.0/24 VMnet1:172.16.1.0/24 2.虚拟机vm1 ip:1 ...

  4. 黑马程序员:Java基础总结----静态代理模式&动态代理

    黑马程序员:Java基础总结 静态代理模式&动态代理   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 静态代理模式 public  class  Ts {   ...

  5. 怎样处理iOS 5与iOS 6的 low-memory

    移动设备终端的内存极为有限,应用程序必须做好low-memory处理工作,才能避免程序因内存使用过大而崩溃. low-memory 处理思路 通常一个应用程序会包含多个view controllers ...

  6. 解决NGINX的WORDPRESS伪静态规则失效的问题

    解决NGINX的WORDPRESS伪静态规则失效的问题 前两天搬到了EMSVPS的PR线路上,用上了最新的WDCP2.0管理面板,支持多用户管理(我们几个合租的VPS,最需要这个功能了),感觉很不错, ...

  7. 阿里2016实习offer五面经验与总结(转)

    前言 目前楼主已经拿到阿里实习offer,一共经历了5次面试,其中4轮技术面,1轮HR面试.在这里分享一下自己的面试经验和学习总结.写这篇面经主要是希望能够帮助更多的小伙伴.我本科毕业于中南大学信管专 ...

  8. Cocos2d-x v3.0正式版尝鲜体验【3】 Label文本标签

    Cocos2d-x在新版本号中增加了新的Label API.和以往不同的是,2.x的版本号是通过三个不同的类来创建不同的文本标签,而如今是模仿着精灵的创建方式.一个类创建不同形式的文本,只是核心内容还 ...

  9. U14Linux的帐号与用户组

    1.在/etc/group和/etc/gshadow中查找mousegroup: grep mousegroup /etc/group /etc/gshadow (grep的使用) 2.其实Linux ...

  10. javaEE jdbc编程步骤

    1.载入数据库驱动(jar文件) //须要下载一个数据库的jar包,并导入对应的JDBC项目中,创建路径! Class.forName("com.mysql.jdbc.Driver" ...