Spring3.0 – 学习笔记 – Bean装配
------转载请注明出处 作者:小魔头
1.Spring bean 配置:
a.自动化隐式装配
b.Java config 显示装配
c.XML 显示装配
2.自动化隐式装配:
a.@Component 添加于定义的类前,Spring根据此注解去创建该类实例并注册到spring容器中
i.默认beanID为首字母小写的类名
ii.显示配置beanID -- @Component(“beanID”)
b.@Autowired 添加于成员属性或者成员方法或构造方法前,spring会根据该注解从容器中配置bean并且注入到该属性或者方法的参数传入
i.Spring首先根据成员属性或者参数的类型名搜索匹配的bean,无匹配对应时根据beanID进行配置
例子:当成员属性或者参数是接口时,但是bean的实例化对象是接口的实现类,则无法进行名称匹配,转以beanID进行配置
ii.自动装配的配置不仅限于@Component生成的, javaconfig和xml生成的bean同样可以进行自动装配
iii.强依赖使用构造器注入,弱依赖使用属性注入
c.组件扫描 -- 通过XML 配置<context:component-scan base-package = “ ”/> 启动spring自动扫描功能,a和b 项才能正常加载
d.组件扫描 – 或者通过javaconfig 同样可以启动组件扫描功能,代码如下:
@Configuration @ComponentScan Public class beansConfig(){ }
e.设置基本扫描包
@ComponentScan(basePackages={“com.package1”, “com.package2”}) @ComponentScan(basePackageClasses={“Bullet.class”, “Gun.class”})//以类所在的包围基本包进行扫描
3.Javaconfig 显示装配:
a.创建一个beanConfig 配置类 如下:
@Configuration Public class beansConfig(){ @Bean Public Bullet setBullet(){ Return new Bullet(); } @Bean Public Gun getGun(){ Return new Gun(setBullet());//Gun必须有一个参数的构造方法 } }
i.Config代码中通过new bean的实例对象 来达到 和(@Component&@ComponentScan)一样的作用,实例化bean到spring容器中,以上方式这两个有依赖关系的类必须在同一javaconfig类中,所以这种方式不推荐使用
ii.beanID默认是方法名, 可以使用@Bean(name=””)显示声明
iii.注入到容器中的bullet和gun的bean
b.创建另外另外一个javaconfig 如下:
@Configuration Public class beansConfig(){ @Bean Public Bullet setBullet(){ Return new Bullet(); } @Bean Public Gun getGun(Bullet bullet){ Return new Gun(bullet);//Gun必须有一个参数的构造方法 } }
i.注入到Gun中bullet实例可以是javaconfig/@Component/XML 生产的bean, 甚至Gun 实例bean的装配都可以是在另外一个javaconfig 类中
4.XML 显示装配:
a.在xml文件中使用如下配置进行声明bean,spring会实例化并且加载到容器
<bean id=”bullet” class =”com.package1.Gun”/>
<bean id=”bullet” class =”com.package1.Bullet”/>
b.构造器注入依赖
i.构造器注入实例bean, class类必须有相应的构造器
<bean id=”gun” class =”com.package1.Gun”>
<constructor-arg ref=”bullet”/>
</bean>
使用<beans xmlns:c=”http:www.springframework.or/schema/c” 代替如下:
<bean id=”gun” class =”com.package1.Gun”>
<c:cd-ref=”bullet”/>
</bean>
ii.构造器注入字符
<bean id=”gun” class =”com.package1.Gun”>
<constructor-value=”shoot”/>
</bean>
iii.构造器注入集合
<bean id=”gun” class =”com.package1.Gun”>
<constructor-arg>
<list>
<ref bean=”bullet”/>
</list>
<constructor-arg/>
</bean>
c.属性注入
i.注入bean,class类中必须有对应的get和set方法(如果没有使用@autowired注入或者javaconfig)
<bean id=”gun” class =”com.package1.Gun”>
<property name=”bullet” ref=”bullet”/>
</bean>
ii.注入字符和集合
<bean id=”gun” class =”com.package1.Gun”>
<property name=”bullet” value=”shoot”>
<property name=”bulletList”>
<list><value>shoot you</value></list>
</property name=”bullet”>
</bean>
d.多个xmlbeans文件使用<import resource="config/beans.xml"/>引入依赖注入beans
5.混合装配
a.和上面多个xmlbeans 使用<import resource/>类似,
i.多个javaconfig 配置类时需要使用@Import(dependentcyConfig.class)
ii.或者创建一个总体配置类@Import({Config1.class,Config2.class})
b.如果需要在javaconfig配置类中注入在xml中配置的bean时,使用@ImportResource(“classpath:beans.xml”)
c.如果xml中配置的bean需要注入javaconfig配置类中bean,通过如下引用
<bean class=”dependentcyConfig.class”>
相关推荐
尚学堂的Spring学习笔记.doc可能包含对这些特性的详细解释、实例代码以及如何在实际项目中应用的指导,对于想要深入理解Spring 3.0的开发者来说是一份宝贵的参考资料。通过阅读这份笔记,你可以系统地学习Spring 3.0...
《Spring技术内幕 学习笔记》是一份深入探讨Spring框架核心机制的学习资料,结合作者zzc1684在iteye博客上的博文,我们可以从中学习到Spring框架的多个重要知识点。Spring作为Java企业级应用开发的基石,其设计思想...
这份"Spring框架学习笔记"涵盖了Spring框架的基础知识、核心组件以及高级特性,对于初学者来说是一份宝贵的资料。 一、Spring框架概述 Spring框架是为了解决企业应用开发的复杂性而设计的,它提供了一个全面的基础...
马士兵老师是知名的Java教育专家,他的Spring框架学习笔记深入浅出,对于初学者和进阶者来说都是一份宝贵的资源。这份笔记涵盖了Spring的核心概念、配置、AOP(面向切面编程)、DI(依赖注入)等关键知识点。 1. **...
本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...
在Spring中,bean的注入与装配是核心概念之一,有多种方式可以实现,例如XML配置、通过get和set方法、构造函数或是注解。使用注解是一种简洁的方法,Spring提供了大量注解来简化开发,如@Autowired、@Component、@...
2. **`@Autowired`注入**:当Bean被自动扫描后,Spring可以使用`@Autowired`注解自动装配依赖。这个注解告诉Spring,应该找到类型匹配的Bean来注入当前Bean的属性、构造器参数或方法。 3. **`@Configuration`与`@...
这份学习笔记将带你深入理解Spring的精髓,包括它的起源、设计理念以及实际应用中的关键功能。 1. **Spring框架简介** Spring最初由Rod Johnson创建,目的是为了解决企业应用开发的复杂性,提供一种轻量级的容器,...
标题和描述均提到了“spring指南学习笔记”,这意味着文档聚焦于Spring框架的学习心得与关键概念。Spring是一个开源的Java企业级应用框架,以其强大的依赖注入(Dependency Injection, DI)和面向切面编程(Aspect ...
《Spring2.5 学习笔记》是一份深入解析Spring框架2.5版本的文档,旨在帮助开发者全面理解和掌握这一经典版本的核心特性与应用实践。Spring作为Java领域中最流行的轻量级框架之一,其2.5版本在当时的发布带来了许多...
以下将详细介绍Spring学习笔记中的主要知识点。 **面向抽象编程** 面向抽象编程是一种设计原则,强调在代码中使用接口或抽象类,而不是具体实现类。这使得系统更具有灵活性,易于扩展和维护。在Spring框架中,我们...
总的来说,《Spring技术内幕》的学习笔记详细介绍了Spring IoC容器的内部工作原理,包括其层次结构、主要接口和实现、以及Bean定义的加载和解析过程。理解这些内容对于深入掌握Spring框架,优化应用设计,以及解决...
### Spring学习笔记知识点详解 #### 一、Spring框架概述 **Spring** 是一个开源的、分层的企业级应用开发框架,旨在简化Java EE应用程序的开发。它的主要目标是提高开发效率,减少耦合度,并提供一种更为简洁的...
《Spring 2.5 学习笔记》 在IT领域,Spring框架是Java企业级应用开发的首选框架,而Spring 2.5是其发展历史中的一个重要里程碑。本笔记将深入探讨Spring 2.5的核心特性,帮助读者理解并掌握这一版本的精髓。 一、...
本学习笔记将深入探讨Spring 5的各个方面,包括基本概念、配置、核心组件以及最新特性。 首先,我们来了解一下Spring框架的核心概念。Spring的核心是IoC(Inversion of Control)容器,它负责管理对象的生命周期和...
Spring学习笔记2涵盖了Spring框架的核心概念和重要特性,旨在帮助开发者深入理解并熟练掌握Spring的使用。 1. **依赖注入(Dependency Injection, DI)**:这是Spring最核心的设计原则,它允许对象之间的依赖关系在...
在描述中提到的“Spring2学习笔记帮你完善管理SSH”,这里的SSH通常是指Struts、Spring和Hibernate的组合,这是一种经典的Java Web开发架构。 首先,我们来详细讲解Spring 2中的核心概念: 1. **依赖注入...
本教程将深入探讨Spring框架的核心概念及其在SSM整合中的作用,结合尚硅谷2022年的学习笔记,为开发者提供一份详尽的指南。 **一、Spring框架简介** Spring是一款开源的Java平台,它提供了全面的企业级应用开发解决...
- **基于注解的spring_3[1].0.x_MVC学习笔记**: 这份笔记将详细解释Spring 3.0.x版本中的注解驱动开发,包括依赖注入、AOP和数据绑定等。 - **Spring入门教程**: 这是Spring框架的基础教程,涵盖了Spring的核心概念...