今天总结的是Sping ,首选什么是Spring?Spring能做什么?Spring是一个轻量级的框架,可以用于一站式开发,因为Spring 可以组合很多的框架,hibernate,Struts2,mybites等等
Spring用到的资源很少,而且最小的完整的spring大小不到2M,Spring 的核心是IOC(控制反转)和DI(依赖注入),个人使用Spring的最大感受就是对于使用bean的一系列优化和解耦
那么什么是IOC和AOP?DI?
控制反转:表示把对象(bean)实例化的权利交给Spring去做
面向切面:降低各层之间的耦合度,加入一个代理(proxy),尽量不改原来的代码
依赖注入: 如果一个对象依赖于另一个对象,那么将这个对象依赖的对象参数传递进来
bean配置时,id与name属性的区别?
id表示唯一的不可重复,name的属性可以重复,但是后边相同的name会覆盖前边的name
构造Bean对象,可以有哪些方法?
1.默认的空参构造 2.静态工厂的方式 3.实例工厂方式
<bean id="book" class="it.c.Book">
<property name="name" value="精通spring"></property>
<property name="author" value="老徐"></property>
</bean>
<!-- 静态工厂的方法 -->
<bean id="book" class="it.c.ConstruterObject" factory-method="getBook"></bean>
<!-- 实例工厂 -->
<bean id="construterObject" class="it.c.ConstruterObject"></bean>
<bean id="book" factory-bean="construterObject" factory-method="getBook"></bean>
Bean的作用域有哪些?
个人目前只记得两个比较重要的 singleton 单例的 ,prototype多例的 还有request,session,globalsession
Bean的生命周期?
1. 解析application.xml 文件 实例化bean 默认是单例的
2. 根据<propety>节点 依赖注入传入参数
3. 如果bean实现了BeanNameAware接口,spring将调用setBeanName(bean的id)将id传入
4. 如果bean实现了BeanFactoryAware接口,spring将调用setBeanFactory方法,将工厂实例传入
5· 如果bean实现了ApplicationContextAware()接口,spring将调用setApplicationContext()方法将上下文传入的引用
6. 如果bean实现了BeanPostProcessor接口,spring将调用它们的postProcessBeforeInitialization接口方法
7. 如果bean实现了InitializingBean接口,spring将调用它们的afterPropertiesSet接口方法
8. 如果bean实现了BeanPostProcessor接口,spring将调用它们的postProcessAfterInitialization接口方法
9. 此时bean已经准备就绪,可以被应用程序使用,他们存在应用上下文中,直到被销毁
10. 若bean实现了DisposableBean接口,spring将调用它的distroy()接口方法
Bean中属性注入的方式有哪些?
手动:1.set
2. 有参数构造
<!-- 6.1构造方法注入 -->
<bean id="injectConstructorUser" class="cn.itcast.e_propinject.constructor.User"><constructor-arg index="0" value="1111"></constructor-arg>
<constructor-arg index="1" value="123456"></constructor-arg>
</bean>
3. p处理
自动:注解方式
实现List,Set,Map,Properties集合注入?
<bean id="list" class="it.cast.colltction.AllCollections"><property name="list">
<list>
<value>xpy</value>
<value>kop</value>
<value>opr</value>
<ref bean="book"></ref>
</list>
</property>
<property name="set">
<set>
<value>人</value>
<value>情</value>
<value>人</value>
</set>
</property>
<property name="map">
<map>
<entry key="1" value="可以啊小map"></entry>
<entry key="2" value="tom猫我们走"></entry>
<entry key="3" value-ref="book"></entry>
</map>
</property>
<property name="pro">
<props>
<prop key="5">12</prop>
<prop key="6">45</prop>
</props>
</property>
</bean>
<import resource="applicationContext-book.xml"/>
常用注解有哪些?
@Component 描述Spring框架中Bean
@Repository 用于对DAO实现类进行标注
@Service 用于对Service实现类进行标注
@Controller 用于对Controller实现类进行标注
@Autowired的required属性,设置一定要找到匹配的Bean
@Qualifier指定注入Bean的名称
@Resource标准注解