Spring装配bean方法实例总结

网友投稿 230 2022-12-09


Spring装配bean方法实例总结

一 前言

在XML中进行显式配置。

在java中进行显式配置。

隐式的bean发现机制和自动装配

关于xml配置不会在本篇说明,有兴趣的读者可以自行了解学习;

二 自动装配bean

自动装配Bean主要通过如下两个方式实现自动装备bean

组件扫描(component scanning):Spring会自动扫描发现上下文中所创建的bean;对应java配置@ComponentScan注解,其会默认会扫描与配置类相同的包和其子包;如果是xml就是

自动装配(autowiring):Spring自动化管理bean之间的依赖关系;java配置@Autowiring注解,相当于java规范中的@Inject注解;其可以使用在任何类的任何方法上;不建议将required属性设置为false,否则如果在bean未装配的情况下就会报空指针异常;

@Component注解:赋予spring上下文组件类一个ID;如果不指定value默认就是将类名的第一个字母变为小写形式;其相当于java规范中的@Name注解;

敲黑板了:

理下思路我们可以通过@Component注解使用在多个类上实现多个bean;然后通过@Autowiring使用在方法上实现bean之间的依赖注入;最后通过@ComponentScan将所有bean扫入spring应用上下文;当然里面还有许多使用的小细节,要不然很容易出错;

实现如下

2.1 棉被类

/**

* @Author lsc

*

棉被

*/

@Component

public class Quilt {

// 质量

private StringRLHENwXqht quality;

public void product(){

System.out.println("生产与中国");

}

// 省略set/get

}

2.2 被单类

/**

* @Author lsc

*

被单

*/

@Component//相当于@Component("sheet")

public class Sheet {

// 颜色

private String color;

// 长度

private String length;

private Quilt quilt;

// 使用构造器注入方式将Quilt注入到Sheet,你也可以使用set方式;原则上还可以其它方法

public Sheet(Quilt quilt){

this.quilt = quilt;

}

// 省略set/get

}

2.3被单配置类

/**

* @Author lsc

*

被单配置类

*/

@Configuration//告诉spring这是一个配置类

@ComponentScan//这边的包是com.zszxz.auto 相当于@ComponentScan(basePackages = {"com.zszxz.auto"})

public class SheetConfig {

}

2.4 测试类

/**

* @Author lsc

*

*/

@RunWith(SpringJUnit4ClassRunner.class)//创建spring应用上下文

@ContextConfiguration(classes= SheetConfig.class)//加载配置类

public class SheetTest {

@Autowired

Sheet sheet;

@Test

public void sheetTest(){

// 生产与中国

sheet.getQuilt().product();

}

}

三 java配置

java配置只需要通过如下注解即可完成,通常使用在引入第三方类时;

@Configuration注解:告诉spring这是一个配置类

@Bean注解:告诉spring这是一个bean,使用在方法上,默认bean的名称就是方法名也就是前面提到的bean的ID;

思路:@Configuration注解声明的配置类中使用注解@Bean,就实现了java配置;

3.1 棉类

/**

* @Author lsc

*

*/

public class Cotton {

// 质量

private String quality;

public void product(){

System.out.println("cotton生产与中国");

}

// 省略set/get

}

3.2 毛毯

/**

* @Author lsc

*

毛毯

*/

public class Blanket {

// 颜色

private String color;

// 长度

private String length;

// 构造器注入

private Cotton cotton;

@Autowired

public Blanket(Cotton cotton)http://{

this.cotton = cotton;

}

// 省略set/get

}

3.3 毛毯配置类

/**

* @Author lsc

*

毛毯配置类

*/

@Configuration//告诉spring这是一个配置类,spring会扫描其所有配置纳入spring容器

public class BlanketConfig {

// 将Cotton注入到spring应用上下文

@Bean

public Cotton cotton(){

return new Cotton();

}

// 将 Cotton注入到Blanket注入到spring应用上下文

@Bean

public Blanket blanket(Cotton cotton){

return new Blanket(cotton);

}

}

3.4 测试类

/**

* @Author lsc

*

*/

@RunWith(SpringJUnit4ClassRunner.class)//创建spring应用上下文

@ContextConfiguration(classes= BlanketConfig.class)//加载配置类

public class BlanketTest {

@Autowired

Blanket blanket;

@Test

public void sheetTest(){

// cotton生产与中国

blanket.getCotton().product();

}

}

四 配置结合

使用 @Import 注解能将一个配置类导入另一个配置类, 通常用来合并配置类,下面的示例使用方式更加优雅;

使用示例

/**

* @Author lsc

*

*/

@Configuration

@Import({SheetConfig.class, BlanketConfig.class})

public class MergeConfig {

}

测试示例

/**

* @Author lsc

*

*/

@RunWith(SpringJUnit4ClassRunner.class)//创建spring应用上下文

@ContextConfiguration(classes= MergeConfig.class)//加载配置类

public class MergeTest {

@Autowired

Blanket blanket;

@Test

public void sheetTest(){

// cotton生产与中国

blanket.getCotton().product();

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Springboot整合MongoDB进行CRUD操作的两种方式(实例代码详解)
下一篇:Spring @Profile注解实现多环境配置
相关文章

 发表评论

暂时没有评论,来抢沙发吧~