Spring IOC容器-注解的方式【更简化】
----更加简化的版本
UserAction.java
import javax.annotation.Resource;import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;//@Component("userAction") // 加入IOC容器//@Component@Controller // 控制层的组件
public class UserAction {@Resourceprivate UserService userService;public String execute() {userService.save();return null;}
}
UserService.java
import javax.annotation.Resource;import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;//@Component("userService") // userService加入ioc容器//@Component@Service // 表示业务逻辑层的组件
public class UserService {// @Resource // 根据类型查找 【在容器中要确保该类型只有一个变量】@Resource(name = "userDao") // 根据名称查找private UserDao userDao; // 去容器中招UserDao类型的变量,找到后就赋值public void save() {userDao.save();}
}
UserDao.java
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;// 把当前对象加入ioc容器
//@Component("userDao") // 相当于bean.xml 【<bean id=userDao class=".." />】//@Component // 加入ioc容器的UserDao对象的引用名称, 默认与类名一样, 且第一个字母小写@Repository // 在持久层可以选择用这个注解
public class UserDao {public UserDao(){System.out.println("UserDao.UserDao()");}public UserDao(int id){System.out.println("UserDao.UserDao(int id)" + id);}public void save() {System.out.println("zengmg:保存用户!!!");}
}
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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!-- 开启注解扫描 --><context:component-scan base-package="zengmg.e_anno2"></context:component-scan><bean id="userDao" class="zengmg.UserDao" scope="prototype"></bean></beans>
测试代码:
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {// 创建容器对象private ApplicationContext ac = new ClassPathXmlApplicationContext("zengmg/e_anno2/bean.xml");@Testpublic void testExecuteAction() {// 从容器中获取ActionUserAction userAction = (UserAction) ac.getBean("userAction");userAction.execute();}
}
Spring IOC容器-注解的方式【更简化】相关推荐
- Spring IOC容器-注解的方式
注解方式可以简化spring的IOC容器的配置,但不利于后期维护,对象之间的依赖关系不能像xml文件一样方便查阅,一目了然. 注解可以和XML配置一起使用. 使用注解步骤: 1)先引入context名 ...
- 【小家Spring】Spring注解驱动开发---向Spring Ioc容器中注册Bean的7种方式
每篇一句 比你有钱的人一定会比你努力,而比你努力的人终有一天会比你有钱 前言 Spring是一个非常强大的反转控制(IOC)框架,以帮助分离项目组件之间的依赖关系.因此可以说Spring容器对Bean ...
- Spring IOC容器-Bean管理——基于XML方式
Spring IOC容器-Bean管理--基于XML(续集) 1.IOC 操作 Bean 管理(FactoryBean) 1).Spring 有两种类型 bean,一种普通 bean,另外一种工厂 ...
- Spring入门到精通:第二章 IOC容器(XML方式):1.IOC概念
百度百科表述: 控制反转(Inversion of Control,缩写为IOC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度.其中最常见的方式叫做依赖注入(Dependenc ...
- Spring IOC容器和Bean的配置
Spring IOC容器 和Bean的配置 : IOC和DI IOC(Inversion of Control):反转控制 在应用程序中的组件需要获取资源时,传统的方式是组件主动的从容器中获取所需要的 ...
- Spring – IoC 容器
Spring IoC 容器是 Spring 框架的核心.容器将创建对象,将它们连接在一起,进行配置,并管理从创建到销毁的整个生命周期.Spring 容器使用依赖项注入(DI)来管理组成应用程序的组件. ...
- Spring IOC 容器源码分析 - 填充属性到 bean 原始对象
1. 简介 本篇文章,我们来一起了解一下 Spring 是如何将配置文件中的属性值填充到 bean 对象中的.我在前面几篇文章中介绍过 Spring 创建 bean 的流程,即 Spring 先通过反 ...
- Spring IOC 容器源码分析 - 创建原始 bean 对象
1. 简介 本篇文章是上一篇文章(创建单例 bean 的过程)的延续.在上一篇文章中,我们从战略层面上领略了doCreateBean方法的全过程.本篇文章,我们就从战术的层面上,详细分析doCreat ...
- Spring IOC 容器源码分析系列文章导读 1
1. 简介 Spring 是一个轻量级的企业级应用开发框架,于 2004 年由 Rod Johnson 发布了 1.0 版本.经过十几年的迭代,现在的 Spring 框架已经非常成熟了.Spring ...
最新文章
- 下一代防火墙市场高速增长,年复合增长率为13.6%
- 一款纯css3实现的响应式导航
- PAT 甲级 1027 Colors in Mars
- Java Trie字典树,前缀树
- 解决IIS SMTP无法发信的故障
- 金蝶结账时显示系统错误h80004005_金蝶KIS云专业版(仓存模块)常见问题解决汇总...
- 天际数见数据质量巡检架构优化
- 较为周全的Asp.net提交验证方案 (下)
- 全字库说文解字字体_【180期】可商用字体大全,无版权纠纷!
- Flask Oauth
- mysql查找数据库中是否已经存在某张表
- nginx rewrite解决 jenkins error 404心得笔记
- 47 Python - 装饰器 回忆函数基础
- 八、接口中的默认方法与静态方法
- php require失败,关于php:致命错误:require_once()[function.require]:要求打开失败
- 征途猎魔mysql数据库_字典列表的拓展理解
- Unity组件:Lens Flare 镜头光晕
- android显示大图片
- “adb”不是内部或外部命令,也不是可运行的程序或批处理文件
- 从多臂老虎机开始学习强化学习中的探索与利用
热门文章
- oracle导出中文utf8乱码,ORACLE导入导出后发生中文乱码的原因及解决办法
- 2002勘察设计收费标准_上海装修设计师的收费标准是什么?
- android 克隆对象,克隆会破坏单例对象吗?
- junit4进行单元测试
- 2014 网选 5011 Game(Nim游戏,数学题)
- 你的main函数规范吗?
- 南通大学计算机系本二,2012年南通大学计算机科学与技术学院江苏省内第二批本科(院校代码:1301)...
- linux配置usb主从_杂集:浅谈关于Mongodb数据库主从复制
- thymealf 高级用法_Thymeleaf
- Linux系统的基本安装