转: 第二章 IoC Annotation注入
http://blog.csdn.net/p_3er/article/details/9231307
1、命名空间
使用Annotation的方式,需要在spring的配置文件中配置命名空间。命名空间中,隐式地注册了多个对注解进行解析处理的处理器。
a、引入context命名空间
- <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-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd">
b、打开注解功能
- <context:annotation-config />
2、@Autowired与@Resource
@Autowired与@Resource在使用上是没有任何区别的。即可以放于属性声明之前,也可以放于属性的setter方法头上。
只是@Autowired注解是由Spring提供的,它是按类型进行装配。而@Resource是由JavaEE提供的,它是按属性的名字进行装配,找不到名字后再找类型按类型装配。
@Autowired是推荐使用的。
3、具体使用:
UserDao与UserDaoImpl:
- public interface UserDao {
- public void save();
- }
- public class UserDaoImpl implements UserDao {
- public void save() {
- System.out.println("保存用户...");
- }
- }
UserService接口及其实现类UserServiceImpl:
- public interface UserService {
- public void addUser();
- }
在UserServiceImpl中使用注解把UserDao对象注入进来使用。
- public class UserServiceImpl implements UserService {
- //1
- @Autowired private UserDao userDao;
- public UserServiceImpl(UserDao userDao, String username) {
- this.userDao = userDao;
- this.username = username;
- }
- public void addUser() {
- System.out.println(username);
- userDao.save();
- }
- }
在上面注释1的地方还可以替换成以下几种方式:
- @Autowired
- public void setUserDao(UserDao userDao) {
- this.userDao = userDao;
- }
- @Resource private UserDao userDao;
- @Resource
- public void setUserDao(UserDao userDao) {
- this.userDao = userDao;
- }
配置文件:
- <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-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd">
- <context:annotation-config />
- <!-- 配置文件中,UserDaoImpl与UserServiceImpl是相互对立,没有任何关系的。-->
- <bean id="userDao" class="cn.framelife.spring.dao.impl.UserDaoImpl"></bean>
- <bean id="userService" class="cn.framelife.spring.service.impl.UserServiceImpl"></bean>
- lt;beans>
4、注意:
1、使用注解功能,必须是JDK5.0及以上版本。
2、一般来说,基本数据类型的属性不使用Annotation的方式注入,Annotation只用于Bean的装配。而且,如果不是必须,基本数据类型的属性一般不使用注入的方式。
转: 第二章 IoC Annotation注入的更多相关文章
- 第二章 IoC Setter注入
Setter注入又称为属性注入.是通过属性的setXXX()方法来注入Bean的属性值或依赖对象.由于Setter注入具有可选择性和灵活性高的优点,因此Setter注入是实际应用中最常用的注入方式. ...
- Spring3实战第二章第二小节 IOC依赖注入 list和map集合
Spring有多种依赖注入的形式,本篇文章仅介绍Spring通过xml进行IOC配置的方式. 1.Set注入 2.构造器注入 平常的Java开发中,程序员在某个类中需要依赖其它类的方法. 通常是new ...
- 第二章 IOC + AOP 底层原理
<精通Spring4.x 企业应用开发实战>读书笔记 一.概念 IOC: 假设B类调用了A类,那么A类的对象的创建是由B类来实现: IOC是指将A对象的创建由容器来完成,并且将创建好的对象 ...
- 第二章 IoC
什么是IoC 如何配置IOC Bean的生命周期 多环境配置 条件化配置Bean 什么是IOC? IOC有两层含义, 1.控制反转:将对象实例的创建与销毁的权限交给Spring容器管理,而不再是调用对 ...
- SPRING IN ACTION 第4版笔记-第二章-003-以Java形式注入Bean、@Bean的用法
1. package soundsystem; import org.springframework.context.annotation.Bean; import org.springframewo ...
- 《Spring技术内幕》笔记-第二章 IoC容器的实现
简单介绍 1,在Spring中,SpringIoC提供了一个主要的JavaBean容器.通过IoC模式管理依赖关系.并通过依赖注入和AOP切面增强了为JavaBean这样子的POJO提供事务管理,生命 ...
- Spring 3.x 实践 第一个例子(Spring 3.x 企业应用开发实战读书笔记第二章)
前言:工作之后一直在搞android,现在需要更多和后台的人员交涉,技术栈不一样,难免鸡同鸭讲,所以稍稍学习下. 这个例子取自于<Spring 3.x 企业应用开发实战>一书中的第二章,I ...
- Java开发工程师(Web方向) - 04.Spring框架 - 第2章.IoC容器
第2章.IoC容器 IoC容器概述 abstract: 介绍IoC和bean的用处和使用 IoC容器处于整个Spring框架中比较核心的位置:Core Container: Beans, Core, ...
- Android艺术开发探索——第二章:IPC机制(下)
Android艺术开发探索--第二章:IPC机制(下) 我们继续来讲IPC机制,在本篇中你将会学习到 ContentProvider Socket Binder连接池 一.使用ContentProvi ...
随机推荐
- [C++]Hello C++
最先进项目中需要用到C++做开发,所以开始学习C++,典型的眼高手低,刚开始觉得还算上手,之后越学越觉得复杂. 相比C#,C++确实需要开发者投入更多的精力去设计与维护. 以下是最近对C++开发的一些 ...
- 使用独立PID namespace防止误杀进程
一段错误的代码 首先看一段错误的代码: #!/bin/bash SLICE=100; slppid=1; pidfile=/var/run/vpnrulematch.pid # 停止之前的sleep ...
- 【web必知必会】—— 图解HTTP(转)good
本篇总结关于http的相关知识,主要内容参考如下导图: 主要讲解的内容有: 1 URL与URI的区别. 2 请求报文与相应报文的内容. 3 GET与POST的区别. 4 http的cookie.持久化 ...
- OC 获取城市首字母
解析依据文件中面的内容,读入一个城市,输出所在首字母 比方读入 长春 输出 c 读入 北京 输出 b 不知道文本中的字体是什么格式 读取文件时 程序不能正确执行 运用oc中的字典 initWithOb ...
- 黑马程序猿————OC在Foundation框架结构和字符串
------<a href="http://www.itheima.com" target="blank">Java火车.Android火车.iOS ...
- mysql增量ID
启动值更改方法
在mysql很多朋友感到场AUTO_INCREMENT增量型ID值它不能被改变,其实这种认识是错误的,这里mysql增量ID开始值更改和设置. 设置自动递增字段的通常的方法: 格时加入: create ...
- SpringMVC配置+小例子
先加入SpringMVC的jar包,这个官网上有,下载下来放到lib文件夹下. web.xml文件: <?xml version="1.0" encoding="U ...
- 检查Linux Bash安全漏洞以及各环境修复解决方法
第一.检测是否存在Bash漏洞$env x='() { :;}; echo vulnerable' bash -c "echo this is a test"如果返回以下内容:则请 ...
- Ubuntu 32下Android NDK+NEON的配置过程及简单使用举例
1. 利用VMware在Windows7 64位下安装Ubuntu13.10 32位虚拟机: 2. 从 https://developer.android.com/tools/sdk/ndk/in ...
- 在阿里云的CentOS环境中安装django
购买了一台阿里云主机.操作系统为CentOS 6.5.准备在上面跑Django做Web开发.因为CentOS自带的python版本号较低,安装Django先要安装新版本号python.还是费了点周折. ...