博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA入门[13]-Spring装配Bean
阅读量:6407 次
发布时间:2019-06-23

本文共 3547 字,大约阅读时间需要 11 分钟。

一、概要

Sping装配bean主要有三种装配机制:

  • 在XML中进行显式配置。
  • 在Java中进行显式配置。
  • 隐式的bean发现机制和自动装配。

原则:

建议尽可能地使用自动配置的机制,显式配置越少越好。当你必须要显式配置bean的时候(比如,有些源码不是由你来维护的,而当你需要为这些代码配置bean的时候),我推荐使用类型安全并且比XML更加强大的JavaConfig。最后,只有当你想要使用便利的XML命名空间,并且在JavaConfig中没有同样的实现时,才应该使用XML。

二、自动装配

Spring从两个角度来实现自动化装配:

  • 组件扫描(component scanning):Spring会自动发现应用上下文中所创建的bean。
  • 自动装配(autowiring):Spring自动满足bean之间的依赖

1.组件扫描

@Component注解:添加注解表明该类会作为组件类,并告知Spring要为这个类创建bean。

package bean;import org.springframework.stereotype.Component; @Componentpublic class Category {    private int cateId;    public int getCateId() {        return this.cateId;    }    public void setCateId(int id) {       this.cateId = id;    }    @Override    public String toString() {        return " 商品类型 id=" + this.cateId;    }}

  

2.启用组件扫描两种方式:

①使用XML来启用组件扫描,在applicationContext.xml配置:

  

单元测试:

@ContextConfiguration(locations = "classpath*:applicationContext.xml")@RunWith(SpringJUnit4ClassRunner.class)public class testAutowireXml {    @Autowired    private Category category;    @Test    public void TestXmlBean() {        Assert.assertNotNull(category);    }}

  

②使用java配置

前面的bean类不做任何调整,通过@ComponentScan注解实现自动扫描。例如新建java配置文件BeanConfig.java

@Configuration@ComponentScan(basePackageClasses = bean.Category.class)public class BeanConfig {}

  

单元测试:

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes = BeanConfig.class)public class testAutowireJava {    @Autowired    private Category category;    @Test    public void categoryNotNull() {        Assert.assertNotNull(category);    }}

  

三、JavaConfig装配bean

上面的BeanConfig就是用java config方式实现的。java Config也是一个java类,但它不应该包含任何业务逻辑,也不应该侵入到业务逻辑代码之中,通常会将JavaConfig放到单独的包中。

创建java config关键是使用@Configuration ,表明这个类是一个配置类,该类应该包含在Spring应用上下文中如何创建bean的细节。

在JavaConfig中声明bean,我们需要编写一个方法,这个方法会创建所需类型的实例,然后给这个方法添加@Bean注解。

我们新建一个config文件JavaConfig.java,是在BeanConfig.java基础上去掉@ComponentScan注解,并添加category()返回Category实例。

@Configurationpublic class JavaConfig {    @Bean    public Category category(){        return new Category();    }}

  

单元测试:

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes = JavaConfig.class)public class testJavaConfig {    @Autowired    private Category category;    @Test    public  void testCategoryBean(){        Assert.assertNotNull(category);    }}

  

四、XML方式装配bean

在这篇笔记中包含了如何通过xml方式装配bean实例。

1.构造器传参

①首先为Category添加构造函数:

public class Category {    private int cateId;    public Category() {    }    public Category(int id) {        cateId = id;    }    public int getCateId() {        return this.cateId;    }    public void setCateId(int id) {        this.cateId = id;    }    @Override    public String toString() {        return " 商品类型 id=" + this.cateId;    }}

  

②applicationContext添加bean节点,为constructor-arg设置Id或者index。

  

  

③单元测试:

@ContextConfiguration(locations = "classpath*:applicationContext.xml")@RunWith(SpringJUnit4ClassRunner.class)public class testAutowireXml {    @Autowired    private Category category;……    @Test    public void testId(){        Assert.assertEquals(100,category.getCateId());    }}

  

④c-命名空间

这种语法用起来简化一些。

调整②中的bean节点:

2.设置属性 :

①通过为bean设置property实现属性

  

②p-命名空间

前面的bean配置可以简化为:

  

五、属性占位符

Spring支持将属性定义到外部的属性的文件中,并使用占位符值将其插入到Spring bean中。在Spring装配中,占位符的形式为使用“${ ... }”包装的属性名称。

config.properties:

cateid=100

  

spring-config.xml:

classpath:properties/config.properties

 

示例代码

转载地址:http://fatea.baihongyu.com/

你可能感兴趣的文章
MongoDB 2.2.1 发布,分布式文档数据库
查看>>
.net连接MySQL的方法
查看>>
关于TopCode
查看>>
[译]JavaScript:属性赋值和原型链
查看>>
短小精悍的python docstring as test的例子 doctest module,写优雅代码必备
查看>>
Mageia 3 Beta 1 发布,Mandriva 发行版
查看>>
SharpSVN出错信息:Can't determine the user's config path,从此证明了百度是个垃圾
查看>>
参数有中包含空格且使用Post提交时须将空格转换成加号
查看>>
yii中关于CFormModel中的enableClientValidation,设置客户端验证
查看>>
c++---函数
查看>>
MVC 3 数据验证 Model Validation 详解
查看>>
ASSIGN COMPONENT ld_index OF STRUCTURE t_output TO <fs>.这句要怎么理解呢?
查看>>
理解Linux系统负荷
查看>>
D3DXVec3TransformCoord 函数 D3DXVec3TransformNormal 函数
查看>>
SVN使用方法
查看>>
读书笔记2013第4本:《上帝掷骰子吗?》
查看>>
wampserver打开localhost显示 已经找到网站,正在等待回应。
查看>>
一个普通的工科应届生
查看>>
Comet 服务器推送技术
查看>>
标准的JavaBean应该具有的特点
查看>>