ioc

spring面试题

梦想的初衷 提交于 2020-03-16 08:41:43
1.选择使用Spring框架的原因? 使用Spring: 第一是使用它的IOC功能,在解耦上达到了配置级别。 第二是使用它对数据库访问事务相关的封装。 第三就是各种其他组件与Spring的融合,在Spring中更加方便快捷的继承其他一些组件。 2.Spring 是如何管理事务的? spring的事务声明有两种方式,编程式和声明式。spring主要是通过“声明式事务”的方式对事务进行管理,即在配置文件中进行声明,通过AOP将事务切面切入程序,最大的好处是大大减少了代码量。 3.Spring IoC容器配置Bean的方式? 答: 基于XML文件进行配置。 基于注解进行配置。 基于Java程序进行配置(Spring 3+) 4.Bean 是如何被管理的? 在Spring框架中,一旦把一个bean纳入到Spring IoC容器之中,这个bean的生命周期就会交由容器进行管理,一般担当管理者角色的是BeanFactory或ApplicationContext。认识一下Bean的生命周期活动,对更好的利用它有很大的帮助。 概括来说主要有四个阶段:实例化,初始化,使用,销毁。 5.阐述Spring框架中Bean的生命周期? ApplicationContext容器中,Bean的生命周期流程如上图所示,流程大致如下: 1.首先容器启动后

关于.NET中的控制反转及AutoFac的简单说明

狂风中的少年 提交于 2020-03-16 03:21:46
目录 1.控制反转 1.1 什么是依赖? 1.2 什么是控制反转? 1.3 什么是依赖注入? 1.4 简单总结 2.控制反转容器 2.1 IOC容器说明 2.2 使用AutoFac的简介示例 3 使用AutoFac的一些细节 3.1 准备工作 3.2 注册整个程序集中的所有实现类 3.3 注入接口实现类中的接口类型的属性 3.4 关于一个接口有多个不同的实现类 3.5 关于一个实现类实现了多个接口 3.6 关于实例作用域 4.在MVC中使用AutoFac 5.参考及示例源码下载 shanzm-2020年3月16日 02:17:35 1.控制反转 1.1 什么是依赖? 依赖 是面向对象中用来描述类与类之间一种关系的概念。两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务,这样的两个对象之间主要体现为 依赖关系 1.2 什么是控制反转? 说反转则要先说“正转”,传统中,在程序中使用new关键字配合构造函数去创建一个对象,这就是程序主动的创建其所依赖对象,这就是“ 正转 ”。 调用者不自己创建被调用者对象,而交由第三方(容器)进行创建被调用者对象,这个过程称为 控制反转 (inversion of control, IOC )。 为什么要控制反转?控制反转是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度,便于扩展和后期维护。 1.3

java框架篇---spring IOC依赖注入

笑着哭i 提交于 2020-03-16 00:05:19
spring依赖注入的方式有4种 构造方法注入 属性注入 工厂注入 注解注入 下面通过一个实例统一讲解: User.java package com.bjsxt.model; public class User { private String username; private String password; public User(){} public User(String username, String password) { super(); this.username = username; this.password = password; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [username=" + username +

20191230 Spring官方文档(Core 1.12)

☆樱花仙子☆ 提交于 2020-03-14 05:28:28
1.12。基于Java的容器配置 1.12.1。基本概念:@Bean和@Configuration @Bean 批注用于指示方法实例化,配置和初始化要由Spring IoC容器管理的新对象。对于那些熟悉Spring的 <beans/> 的XML配置的人来说,@Bean注释的作用与 元素相同。您可以对任何Spring @Component 使用@Bean带注释的方法 。但是,它们最常与 @Configuration bean一起使用。 用@Configuration注释类表示其主要目的是作为Bean定义的来源。此外,@Configuration类允许通过调用同一类中的其他@Bean方法来定义Bean之间的依赖关系。 完整的@Configuration与“精简”@Bean模式? 如果在未使用@Configuration注释的类中声明@Bean方法 ,则将它们称为以“精简”模式进行处理。在一个@Component或甚至一个普通类中声明的Bean方法被认为是“精简”,其包含类的主要目的不同,而@Bean方法在那儿是一种额外的奖励。例如,服务组件可以通过每个适用组件类上的额外的@Bean方法向容器公开管理视图。在这种情况下,@Bean方法是通用的工厂方法机制。 与完整的@Configuration不同,精简@Bean方法无法声明Bean间的依赖关系。取而代之的是

spring IOC demo

孤街醉人 提交于 2020-03-14 03:47:19
1、使用xml文件配置:   创建applicationContext.xml,在该文件中创建需要的bean, <bean id="hello" class="springdemo.HelloSpring"></bean> 此语句即可创建该类对象,即控制反转,使用容器创建对象。   属性注入:分为set方法与构造方法注入,构造方法可使用下标索引或者数据类型进行对应注入,或者都使用。set注入则使用name=“属性名”进行注入。spring只检查是否有属性对象的set方法,不检查是否有该属性,如setName()方法。 1 <bean id="hello" class="springdemo.HelloSpring"> 2 <constructor-arg index="0" value="kobe"></constructor-arg> 3 <constructor-arg index="1" value="44"></constructor-arg> 4 <property name="name" value="多帅哦"></property> 5 <property name="num" value="22"></property> 6 </bean>   p标签:简化配置信息 1 <bean id="hello" class="IOCdemo.HelloSpring" 2 p

spring ioc 泛型保留

萝らか妹 提交于 2020-03-13 14:57:21
spring ioc 泛型保留 在上一篇中,说到spring中并不能自动注入泛型,如何生成泛型类型已经讲的很清楚了,在本篇着重讲在spring中如何自动注入。 环境 这里所有代码基于如下环境,如有出入请参考当前环境。 java version "1.8.0_201" Java(TM) SE Runtime Environment (build 1.8.0_201-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode) implementation 'org.aspectj:aspectjweaver:1.9.2' implementation "org.springframework:spring-context:5.1.9.RELEASE" implementation 'org.javassist:javassist:3.25.0-GA' 方法一 通过实现 org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor 和 org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor 自定义bean泛型的注入

IOC DI AOP Interception

社会主义新天地 提交于 2020-03-13 03:25:53
今天早上Team内部培训Enterprise Library 中的Unity, 还介绍了IOC & DI & Interception, 下面把这些概念做个梳理. XXContainer 无论是Spring.Net还是EntLib(Enterprise Library的简称)都有一个叫做Container的东西, Spring.Net对应的接口是 IApplicationContext, Unity中的叫做IUnityContainer, 主要做对象的Mapping 任务. IOC IOC直译过来是”控制反转”,这句话应该理解为什么地方的控制被反转了?控制的是什么? 这里的控制指的应该是对象的实例化位置由程序内部的硬编码移动到了程序外部, 实例化的位置做了反向控制. OjbectA a = new Objecta(); 应用了IOC之后就变成了: IObjectA a = Container.Resolve(“OjbectA”) as IObjectA; 可见这里元被直接new的对象,现在交给了Container来做, 让后根据Container中的Mapping 来决定用哪个实现来初始化. DI “依赖注入”的三种注入方法分别是Constructor Injection,Method Injection, Property Injection. 他是针对面向对象”依赖倒置(DIP

IOC和AOP使用拓展

杀马特。学长 韩版系。学妹 提交于 2020-03-13 02:04:55
多种方式实现依赖注入 构造注入 编写测试类 public class UserServiceImpl implements UserService { // 声明接口类型的引用,和具体实现类解耦合 private UserDao dao; // 无参构造 public UserServiceImpl() { } // 用于为dao属性赋值的构造方法 public UserServiceImpl(UserDao dao) { this.dao = dao; } public void addNewUser(User user) { // 调用用户DAO的方法保存用户信息 dao.save(user); } } 在使用设值注入时,Spring通过JavaBean无参构造方法实例化对象,当我们编写带参构造方法后,java虚拟机不会再提供默认的无参构造方法,为了保证使用的灵活性,建议自行添加一个无参构造方法 配置文件代码如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www

spring四种依赖注入方式

旧城冷巷雨未停 提交于 2020-03-12 19:23:10
平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做。 spring有多种依赖注入的形式,下面仅介绍spring通过xml进行IOC配置的方式: Set注入 这是最简单的注入方式,假设有一个SpringAction,类中需要实例化一个SpringDao对象,那么就可以定义一个private的SpringDao成员变量,然后创建SpringDao的set方法(这是ioc的注入入口): Java代码 <EMBED height=15 type=application/x-shockwave-flash pluginspage=http://www.macromedia.com/go/getflashplayer width=14 src=http://blessht.iteye.com/javascripts/syntaxhighlighter/clipboard_new

Castle 开发系列文章

陌路散爱 提交于 2020-03-12 07:00:49
转自:http://terrylee.cnblogs.com/archive/2006/04/28/castl_ioc_article.html Castle是针对.NET平台的一个开源项目,从数据访问框架ORM到IOC容器,再到WEB层的MVC框架、AOP,基本包括了整个开发过程中的所有东西,为我们快速的构建企业级的应用程序提供了很好的服务。4月份以来,Terrylee写了一系列的Castle的文章,这里做一下总结,后续还有Facility系列等,本部分内容会不断的更新。 第一部分:ActiveRecord学习实践系列 1. Castle ActiveRecord学习实践(1):快速入门指南 2. Castle ActiveRecord学习实践(2):构建配置信息 3. Castle ActiveRecord学习实践(3):映射基础 4. Castle ActiveRecord学习实践(4):实现One-Many关系的映射 5. Castle ActiveRecord学习实践(5):实现Many–Many关系的映射 6. Castle ActiveRecord学习实践(6):延迟加载和使用Where子句 7. Castle ActiveRecord学习实践(7):使用HQL查询 8. Castle ActiveRecord学习实践(8):数据有效性的验证 9. Castle