SpringIOC框架简单实现(注解实现)
SpringIOC框架简单实现(注解实现)
前情回顾
运用注解的方式来实现IOC
首先,让我们来创建一个Dog类
@Component("dog")//唯一标识名称
public class Dog implements Pet{
@Autowired
@Value("大狗")
private String name;
@Override
public String toString() {
return name;
}
public void say(){
System.out.println("WangWang");
}
}
- @Component:注名,类同XML中的< bean id="dog" >
- @Autowrited:它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法
- @Value:注入值,类同XML中的< bean value="..." >
建立接口
public interface Pet {
void say();
}
建立Person类
@Component("person")//唯一标识名称
public class Person {
@Autowired
@Value("小狗")
private String name;
@Autowired
private Pet pet;
public void KeepPet() {
System.out.println(name + "和" + pet + "站在树下说:");
pet.say();
}
建立SpringConfiguration类
该类等同于xml文件,具有一样的功能,具体请看代码
@Configuration//标注该类是配置文件XML
@ComponentScan("Ex04")//扫描包
public class SpringConfiguration {
}
- @ComponentScan:根据定义的扫描路径,把符合扫描规则的类装配到spring容器中
- @Configuration:定义配置类,可替换xml配置文件
- 注意:
@Configuration不可以是final类型;
@Configuration不可以是匿名类;
嵌套的configuration必须是静态类;
- 注意:
建立一个测试类
@RunWith(SpringJUnit4ClassRunner.class)//自带的集成测试
@ContextConfiguration(classes = {SpringConfiguration.class})//获取Spring容器
//@ContextConfiguration(locations = "appkicationContext.xml");//获取XML中Spring容器,和上面的只能二者存一
public class Test_anno {
@Autowired
private Person person;
@Test
public void test() {
person.KeepPet();
}
}
- @RunWith就是一个运行器
- @RunWith(JUnit4.class):指用JUnit4来运行
- @RunWith(SpringJUnit4ClassRunner.class):让测试运行于Spring测试环境
- @RunWith(Suite.class):一套测试集合
- 当@ContextConfigurationSpring整合JUnit4测试时,使用注解引入多个配置文件
- 单个文件:
@ContextConfiguration(Locations=“classpath:applicationContext.xml”)
@ContextConfiguration(classes = SimpleConfiguration.class) - 多个文件:
@ContextConfiguration(locations = { “classpath:spring1.xml”, “classpath:spring2.xml” })
- 单个文件:
- @ContextConfiguration(locations = "appkicationContext.xml"):获取指定的xml文件,但是和注解方式获取只能二者存一
测试运行,成功。
总结
通过注解方式来实现SpringIOC框架可以更加的便捷,但是相应的也会有一定的弊端,xml和注解方式各有优点,编译者可以自由的选择两种方式或嵌套使用。
以上就是以注解实现SpringIOC框架,如有错误,麻烦指出,感谢耐心到现在的朋友ᕕ( ᐛ )ᕗ ---By 不断努力的Yang
SpringIOC框架简单实现(注解实现)的更多相关文章
- SpringMVC框架搭建 基于注解
本文将以一个很简单的案例实现 Springmvc框架的基于注解搭建,一下全为个人总结 ,如有错请大家指教!!!!!!!!! 第一步:创建一个动态web工程(在创建时 记得选上自动生成 web.xml ...
- Play Framework框架 JPA惯用注解
Play Framework框架 JPA常用注解 1.@Entity(name=”EntityName”) 必须 ,name 为可选 , 对应数据库中一的个表 2.@Table(name=”" ...
- Spring框架学习之注解配置与AOP思想
上篇我们介绍了Spring中有关高级依赖关系配置的内容,也可以调用任意方法的返回值作为属性注入的值,它解决了Spring配置文件的动态性不足的缺点.而本篇,我们将介绍Spring的又一大核心 ...
- SpringMvc框架MockMvc单元测试注解及其原理分析
来源:https://www.yoodb.com/ 首先简单介绍一下Spring,它是一个轻量级开源框架,简单的来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开 ...
- springmvc+spring3+hibernate4框架简单整合,简单实现增删改查功能
转自:https://blog.csdn.net/thinkingcao/article/details/52472252 C 所用到的jar包 数据库表 数据库表就不用教大家了,一张表,很简 ...
- MongoDB聚合运算之group和aggregate聚集框架简单聚合(10)
聚合运算之group 语法: db.collection.group( { key:{key1:1,key2:1}, cond:{}, reduce: function(curr,result) { ...
- Hibernate框架简单应用
Hibernate框架简单应用 Hibernate的核心组件在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层.它通过配置文件(hibernate.proper ...
- Springmvc整合tiles框架简单入门示例(maven)
Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积 ...
- Django - Django框架 简单介绍
Django框架 简单介绍 本文地址: http://blog.csdn.net/caroline_wendy/article/details/29172271 1. 介绍 Django是一个开放源码 ...
随机推荐
- 【随便写写】印象笔记,WordPress,CSDN 等 写博客的不同
之前有的文章,写在了印象笔记里面,有的文章,写在了自己的WordPress博客里面,但是,感觉还是需要在主流平台分享一下文章的.就再次写写文章吧.(PS:公众号最重要的不是写作,而是排版) 说说几个这 ...
- Tango with django 1.9 中文——3.Django基础
让我们开始运用Django.本章主要是给你一个关于创建新项目和新应用过程的概览.在本章的末尾,你将建立起一个简单的由Django驱动的网站. 3.1 配置测试 让我们测试以下你的Python和Djan ...
- Tango with django 1.9 中文——2.准备工作
在正式开始写代码之前,设置好开发环境是非常重要的.你要确保所有必须的组件都已安装好.本章将概述五个你需要了解的关键组件的设置和使用.清单如下: 使用命令行 Python Python包管理器pip和虚 ...
- Ext.Net一般处理程序上传文件
引言 最近公司项目全部转向前端化,故所有aspx页面业务逻辑尽可能的转到用户控件前台页面完成.以方便每次发布项目时只是替换前端页面不会影响客户体验. 既然转到前台逻辑,那么必须走后台的业务也就单独封装 ...
- WIFI6 基本知识(二)
WI-FI6核心技术 WI-FI6除了继承了WI-FI5的所有MIMO特性之外,还增加了许多针对高密部署场景的特性.以下是WI-FI6的核心新特性: OFDMA频分复用技术 DL/UL MU-MIMO ...
- docker 部署mysql服务之后,执行sql脚本
1,先将.sql文件copy到docker容器里 docker ps //找到容器的短ID或者指定的name. docker inspect -f '{{.Id}}' id or name 得到指定 ...
- rest framework Request
要求 如果你正在做基于REST的Web服务的东西......你应该忽略request.POST. -马尔科姆Tredinnick,Django开发组 REST框架的Request类继承了标准HttpR ...
- PyCharm之python package和directory的区别
python作为一门解释性的脚本语言.python中模块就是指一个py文件,如果我们将所有相关的代码都放在一个py文件中,则该py文件既是程序又是是模块,但是程序和模块的设计目的是不同的,程序的目的是 ...
- BeetleX使用bootstrap5开发SPA应用
在早期版本BeetleX.WebFamily只提供了vuejs+element的集成,由于element只适合PC管理应用开发相对于移动应用适配则没这么方便.在新版本组件集成了bootstra ...
- Distributed Cache(分布式缓存)-SqlServer
分布式缓存是由多个应用服务器共享的缓存,通常作为外部服务存储在单个应用服务器上,常用的有SqlServer,Redis,NCache. 分布式缓存可以提高ASP.NET Core应用程序的性能和可伸缩 ...