什么是Spring

Spring由哪些模块组成(以Spring4为例)
  Spring core中:框架的基本组成部分,包括控制反转和依赖注入 

Spring IOC(控制反转)
 
Spring IOC 的实现原理
工厂机制+反射原理 
简单实现与应用+理解


什么是Spring的依赖注入(DI)
实现控制反转的是IOC容器,实现方式是依赖注入 IOC容器根据目标对象的依赖关系,自动注入依赖的对象 

依赖的注入方式(构造器注入+set方式注入)–(Bean的xml显示配置)
 构造器注入 
set方法注入(需要手动加入成员变量的属性)  
<bean id="address" class="com.kuang.pojo.Address">
<property name="address" value="南京"/>
</bean>
<bean id="student" class="com.kuang.pojo.Student">
<property name="name" value="qinjiang"/>
<property name="address" ref="address"/>
<property name="books">
<array>
<value>全球高考</value>
<value>好生开车</value>
<value>某某</value>
</array>
</property>
<property name="hobbies">
<list>
<value>听歌</value>
<value>游戏</value>
<value>敲代码</value>
</list>
</property>
<property name="card">
<map>
<entry key="身份证" value="112345"/>
<entry key="电话号码" value="1525"/>
</map>
</property>
<property name="games">
<set>
<value>LOL</value>
<value>COC</value>
</set>
</property>
<property name="wife">
<null/>
</property>
<property name="info">
<props>
<prop key="学号">2019</prop>
<prop key="性别">男性</prop>
</props>
</property>
</bean>

什么是Spring bean
在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象 . 
Bean的作用域
 

单例 bean 的线程安全问题了解吗?

Spring如何处理并发线程安全问题

?单例模式是什么

单例模式详解
Bean的生命周期(太难了,放弃)


Bean的自动装配原理(隐式配置)


autowired 属性Byname的自动配置
 
autowired 属性Bytype的自动配置
 
使用注解实现自动装配(@Autowired/@Resource/@Qualifier)
需要在配置文件中开启注解的支持 
@Autowired注解

是依赖对象不存在 
@Qualifier注解(不能单独使用,需要Autowired注解搭配)

@Resource注解(3级原则)

具体的装配过程

Spring注解(java中的bean显示配置)
声明为Bean的注解有哪些?

@Bean和@Component注解的区别
 
@Configuration注解(一般@Bean需要它的搭配)

Spring AOP(面向切面编程)–底层:代理模式
 
静态代理和动态代理的区别
什么是编译期和运行期
编译期就是生成class字节码文件的过程 运行期就是解释执行字节码文件的过程 

  
动态代理模式(JDK动态代理和CGLIB动态代理)
动态代理模式javaguide

JDK动态代理的核心:Proxy类和InvocationHandler接口(只能代理实现了接口的类)
Proxy类提供了创建动态理类的实例的方法newProxyInstance,且每个动态代理类有一个==“相关联”==的“调用处理程序对象”—即实现了InvocationHandler接口的类,InvocationHandler接口的invoke方法即可以获取代理类的目标对象的所有方法+可以自定义添加方法。 
 
CGLIB代理的核心MethodInterceptor 接口和 Enhancer 类是核心(代理任何类)
 
总结与对比

Spring AOP 和 AspectJ AOP 有什么区别?
 
解释一下Spring AOP里的几个名词
狂神的具体实现应用 

Spring MVC
|