ioc

Spring IOC注解

感情迁移 提交于 2020-04-08 11:41:45
  在Spring中,使用xml文件完全可以实现Bean的装配工作,但如果应用中有很多Bean时     会导致xml配置文件很臃肿,给后续工作带来维护问题,此时提供了注解技术     在使用注解前需要在xml里加入<context-component-scan/>来扫描添加了注解的类,这样注解才能起作用   @Component:可以使用此注解描述Spring中的Bean,相当于xml里的<bean id="XXX" class="XXX"/>     它是一个泛化概念,仅仅表示一个组件Bean,并且可以运用在任何层次,使用时将该注解直接写在类上即可   @Repository:用于数据访问层(Dao层)的类标识为Spring中的Bean其功能与@Component相同   @Service:用于业务层(Service层)用于将业务层标识为Spring中的Bean其功能与@Component相同   @Autowired:对类的成员变量和setter方法及构造方法进行标识完成自动装配工作(DI依赖注入工作)   @Qualifier:与Autowired配合使用,会将默认按照Bean的类型进行装配,修改为按指定Bean的实例名称进行装配   @Resource:与Autowired作用相同,区别在于:@Autowired按照Bean的类型装配,而

31、最简单的mvc框架tiny,增加Ioc,jdbc工具类(1个类),连接池(1个类)

允我心安 提交于 2020-04-07 05:31:27
Ioc 按照mvc,我们需要把tiny分成3层,其中视图(Renderer抽象类)和Action我们已经在前面实现了,这次我们用最少的代码实现Model。 model沿用Action的想法,用户自定义类,类名必须以Model结尾,同Action一样在初始化时放入Container容器内。model就是数据模型,我们这里充血模型,model的类名默认是同数据库的表名做关联的,即类名去掉Model后(转为小写)为表明,这样一对一映射,有时会简单很多,如保存和查询单个表时,当然了你可以传入复杂sql,返回的结果有基本类型、map、list等。 model里需要访问数据库时,我们设计了DbUtil工具类,建议在model里使用,当然了这个还是看你, DbUtil本身没有限制。model是通过ioc注入进来的,在你访问这个action前。下面代码中的Container.inject(o);为容器向action中注入model实例。 Map<String,String> args = this.converter(req.getParameterMap()); String key = UUID.randomUUID().toString(); Container.inject(o); this.before(routes,args,key); Object result = o

32、最简单的mvc框架tiny,orm、原理图、问题与解决思路

拈花ヽ惹草 提交于 2020-04-07 05:30:54
orm 先说下orm,在前面我们没有提这个,其实我们已经实现了orm功能。 这里把orm做了极大的简化,以一个model映射到数据库的一张表。在前面看到我们把业务处理也放在model里,所以这时model才是真正的充血模型,并把对数据库的操作封装为dao,所以orm其实为model+dao。 Tiny v1.0框架原理图 再补一下框架的原理图 Tiny v2.0 设计中。。。(先贴个图) Tiny框架的问题及解决思路 问题1: 参数类型Map<String,String> 问题 我们规定所有参数都为Map<String,String>,中值都为String类型确实有点不好让人接受(虽然从页面传递过来的,都是String类型), 现在我们想 参数转型的 工作由tiny来完成, 我们怎么解决这个问题呢? 解决思路: 重写一个TinyMap类继承HashMap。 我们实现getInt,getString等方法,调用这些方法 可以对类型自动转换,当使用get方法时,其实是调用HashMap的get方法,放回object类型,代码如下: TinyMap tMap = new TinyMap(参); tMap.getInt(key); tMap.getString(key); tMap.get(key);//Ojbect 然后由前置控制器中将页面的参数转换为TinyMap类型

Spring IOC配置与应用

|▌冷眼眸甩不掉的悲伤 提交于 2020-04-06 10:19:28
1. FAQ: 不给提示: a) window – preferences – myeclipse – xml – xml catalog b) User Specified Entries – add i. Location: D:\share\0900_Spring\soft\spring-framework-2.5.6\dist\resources\spring-beans-2.5.xsd ii. URI: file:///D:/share/0900_Spring/soft/spring-framework-2.5.6/dist/resources/spring-beans-2.5.xsd iii. KeyType: Schema Location iv. Key: http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 2. 注入类型 a) Spring_0300_IOC_Injection_Type b) setter (重要) c) 构造方法(可以忘记) d) 接口注入(可以忘记) 3. id vs. name a) Spring_0400_IOC_Id_Name b) name 可以用特殊字符 4. 简单属性的注入 a) Spring_0500_IOC_SimpleProperty b)

Spring Framework之IoC容器

為{幸葍}努か 提交于 2020-04-05 17:33:24
目录 Spring IoC 概述 问题 依赖倒置原则 (Dependency Inversion Principle) 控制反转 (Inversion of Control) 依赖注入(Dependency Inversion) 依赖倒置原则 、控制反转 、依赖注入的关系 优点 IoC 容器 BeanFactory ApplicationContext IoC容器的依赖注入 基于注解定义Bean 自动装配 @Resource @Autowired @Qualifier 基于Java类配置 @Bean Bean的作用域 singleton prototype FactoryBean 解释说明 使用场景 应用案例 IoC容器内部关系 JSR-250注释 @Resource @PostConstruct @PreDestroy 解释 参考 Spring IoC 概述 问题 1.什么是依赖倒置? 2.什么是控制反转? 3.什么是依赖注入? 4.它们之间的关系是怎样的? 5.优点有哪些? 依赖倒置原则 (Dependency Inversion Principle) ​ 依赖倒置是一种设计原则。 ​ 依赖倒置包括三层含义:(1)高层模块不应该直接依赖于底层模块,两者都应依赖其抽象;(2)抽象不应依赖于细节;(3)细节应该依赖于抽象。 控制反转 (Inversion of Control) ​

Spring IOC-基于注解配置的容器

旧巷老猫 提交于 2020-04-04 09:32:25
Spring 中提供了基于注解来配置 bean 的容器,即 AnnotationConfigApplicationContext 1. 开始 先看看在Spring家族中, AnnotationConfigApplicationContext 在一个什么样的地位,看看继承图 可以看到 Spring 提供了基于 Xml 配置的容器之外,还提供了基于注解和 Groovy 的容器,今天我们来看看基于注解配置的容器 2. 方法窥探 看看 AnnotationConfigApplicationContext 中提供了哪些方法 3. 从构造方法开始 我们从构造方法开始,分析基于注解的容器,是如何获取 BeanDefinition 并注册 beanDefinitionMap 中的 public AnnotationConfigApplicationContext(String... basePackages) { this(); scan(basePackages); refresh(); } 接下来一步一步分析下去 this() 调用了本类中的一个无参构造函数 public AnnotationConfigApplicationContext() { //注解bean读取器 this.reader = new AnnotatedBeanDefinitionReader(this); /

谈谈php依赖注入和控制反转

末鹿安然 提交于 2020-04-03 04:33:17
要想理解php依赖注入和控制反转两个概念,就必须搞清楚如下的问题: DI——Dependency Injection 依赖注入 IoC——Inversion of Control 控制反转 1、参与者都有谁?   答: 一般有三方参与者,一个是某个对象;一个是IoC/DI的容器;另一个是某个对象的外部资源。又要名词解释一下,某个对象指的就是任意的、普通的Java对象; IoC/DI的容器简单点说就是指用来实现IoC/DI功能的一个框架程序;对象的外部资源指的就是对象需要的,但是是从对象外部获取的,都统称资源,比如:对象需要的其它对象、或者是对象需要的文件资源等等。 2、依赖:谁依赖于谁?为什么会有依赖? 答: 某个对象依赖于IoC/DI的容器。依赖是不可避免的,在一个项目中,各个类之间有各种各样的关系,不可能全部完全独立,这就形成了依赖。传统的开发是使用其他类时直接调用,这会形成强耦合,这是要避免的。依赖注入借用容器转移了被依赖对象实现解耦。 3、注入:谁注入于谁?到底注入什么? 答: 通过容器向对象注入其所需要的外部资源 4、控制反转:谁控制谁?控制什么?为什么叫反转? 答: IoC/DI的容器控制对象,主要是控制对象实例的创建。反转是相对于正向而言的,那么什么算是正向的呢?考虑一下常规情况下的应用程序,如果要在A里面使用C,你会怎么做呢?当然是直接去创建C的对象,也就是说

SSM框架中IoC、DI与AOP的理解

断了今生、忘了曾经 提交于 2020-03-30 13:06:38
  框架封装了普通项目中程序员需要重复书写的代码和调用过程,就比如说在传统的jsp项目中,我们的controller接收到前端的请求然后程序员就需要去开发Dao层,里面还涉及数据库的连接和存储过程的代码,大部分都是冗余的代码,而有了SSM框架后极大的简化了程序猿在controller以下层的开发,只需要一个service层和mapper层就行了,mapper层用来连接mapper.xml文件的,而直接用mapper.xml做sql语句的开发就行了,而数据库连接的和存储的过程都直接由Mybatis负责了,你只需要负责传递形参和接收返回数据就行了,这样就完成了一次完整的数据库交互! 1.1、IoC是什么   Ioc— Inversion of Control ,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转,哪些方面反转了”,那我们来深入分析一下: ● 谁控制谁,控制什么: 传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对象的创建;谁控制谁?当然是IoC 容器控制了对象;控制什么

Spring DI的配置使用

心不动则不痛 提交于 2020-03-30 08:07:06
1.1.1 依赖和依赖注入 Spring IOC容器的依赖有两层含义:Bean依赖容器和容器注入Bean的依赖资源: a、Bean依赖容器:也就是说Bean要依赖于容器,这里的依赖是指容器负责创建Bean并管理Bean的生命周期,正是由于由容器来控制创建Bean并注入依赖,也就是控制权被反转了,这也正是IOC名字的由来,此处的有依赖是指Bean和容器之间的依赖关系。 b、容器注入Bean的依赖资源:容器负责注入Bean的依赖资源,依赖资源可以是Bean、外部文件、常量数据等,在Java中都反映为对象,并且由容器负责组装Bean之间的依赖关系,此处的依赖是指Bean之间的依赖关系,可以认为是传统类与类之间的“关联”、“聚合”、“组合”关系。 为什么要应用依赖注入,应用依赖注入能给我们带来哪些好处呢? 动态替换Bean依赖对象,程序更灵活 :替换Bean依赖对象,无需修改源文件:应用依赖注入后,由于可以采用配置文件方式实现,从而能随时动态的替换Bean的依赖对象,无需修改java源文件; 更好实践面向接口编程,代码更清晰 :在Bean中只需指定依赖对象的接口,接口定义依赖对象完成的功能,通过容器注入依赖实现; 更好实践优先使用对象组合,而不是类继承 :因为IOC容器采用注入依赖,也就是组合对象,从而更好的实践对象组合。 采用对象组合,Bean的功能可能由几个依赖Bean的功能组合而成

spring新建工程(新建工程、IoC)

老子叫甜甜 提交于 2020-03-29 10:51:18
1、新建一个web项目 2、导入jar包:四个核心(bean、core、context、expression),一个依赖 spring-framework-3.0.2.RELEASE-dependencies:集成了很多jar包,是最新版本。 spring-framework-4.2.4.RELEASE:与spring相关,目录结构如下: (1)导入Spring的核心包:它们是Spring其它功能的基础(四个核心包) (2)导入日志文件相关的jar包:(依赖包) spring-framework-3.0.2.RELEASE-dependencies\org.apache.commons\com.springsource.org.apache.commons.logging\1.1.1 另外一个日志文件相关的包(支持老版本): spring-framework-3.0.2.RELEASE-dependencies\org.apache.log4j\com.springsource.org.apache.log4j\1.2.15 3、IoC入门案例 (1)IoC(Inverse of Control) IoC被称为控制反转,它是一种设计模式,实质上是将对象的创建方式进行反转。传统的资源获取方式是组件向容器发起请求,容器返回资源。在IoC模式下是容器主动地将资源推送给它所管理的组件