spring之如何创建bean(1、自动装配)
来源:互联网 发布:2017好用的网络硬盘 编辑:程序博客网 时间:2024/06/07 19:29
学习spring的基础之一就是要去理解bean的含义以及使用方式。之前学习的时候感觉bean的使用方式真的。。。好迷啊,但是前不久看书+看视频后,终于搞懂了。特地写一篇文章来记录下
首先说说什么是bean吧。书上说是bean是各种组件,spring通过XML或者Java将这些组件合并在一起,并主动将这些组件注入其他组件中,这样形成了相互依赖和相互合作的现象。以下是我的理解:其实bean就是返回一个实例化对象。比如我们平常写Java,会有“A a=new A();”这样便创立了一个实例化的a对象。但是在bean中不会这么写,它会写成“A a;”即没有实例化,然后通过设置使之达到“A a=new A();”的效果。
设置bean有三种方式:自动装配、基于JavaConfig的装配、基于XML的装配。今天先写下自动装配。通过书上的几个例子,加上我个人的理解来写下吧。
首先,顾名思义可知自动装配是spring自动配置的,无需我们显式配置。它主要通过@Component @ComponentScan @Autowired等注解来实现。如以下代码
1、先写个接口
package soundsystem;public interface CompactDisc { void play();}
2、写个类实现这个接口并实现其中的play()方法,可以看到这个类上面用了@Component注解。这个注解表示:将这个POJO(普通Java类)设置为一个组件类。spring会通过自动装配返回一个bean(我的理解是会返回一个 new SgtPeppers();)
package soundsystem;import org.springframework.stereotype.Component;@Componentpublic class SgtPeppers implements CompactDisc{ public void play(){ System.out.println("this is play_method"); }}
3、设置一个类作为“Config类”,使用@Configuration即表示将其声明为一个“Config类”;使用@ComponentScan代表这个“Config类”能扫描组件并将它们整合到这个类中。同时也可以看到这个类中没有任何代码,就是个空类。这便是最简单的Config类
package soundsystem;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;@Configuration@ComponentScanpublic class CDPlayerConfig {}
3.5、也许以下的XML比较常见,这个XML代码实现了和上面这个Config类同样的功能
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd"> <context:component-scan base-package="soundsystem" /></beans>
4、上面便完成了最简单的自动配置,我们可以通过JUnit来测试,SgtPeppers这个bean有没有被整合到Config中去。这段代码中使用了@Autowired注解,即会自动注入对象,如此段代码中只写了 “CompactDisc cd”。此时并未实例化,当加上@Autowired时候,序号3中的Config类便会将它扫描到的SgtPeppers bean自动注入cd对象中。从而实现了”CompactDisc cd=new SgtPeppers();”这行代码。最后加个@Test来使用JUnit来进行检测,效果如下图:
package soundsystem;import static org.junit.Assert.assertNotNull;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes=CDPlayerConfig.class)public class CDPlayerTest { @Autowired private CompactDisc cd; @Test public void test(){ assertNotNull(cd); }}可以看到,右侧下方的一条绿色的线,代表成功,即这个未实例化的cd对象已经被注入(即已经实例化了)
5、接下来让我们把“@Autowired”注解拿掉试试,可以看到没有自动注入的话,这个cd就没有实例化,测试失败
- spring之如何创建bean(1、自动装配)
- spring入门(8)--装配Bean之自动装配
- Spring Bean装配之自动装配
- Spring Bean装配-自动装配
- Spring学习之Bean的自动装配(非注解)
- Spring技术内幕之Bean自动装配
- Spring Bean--自动装配
- Spring Bean 自动装配
- spring自动装配bean
- Spring之Bean的创建和装配
- Spring学习笔记(8.Spring Bean装配之自动装配)
- Spring装配Bean之组件扫描和自动装配
- Spring装配Bean之组件扫描和自动装配
- Spring装配Bean之组件扫描和自动装配
- 《Spring3实战》摘要(3-1)--最小化Spring XML配置之自动装配Bean属性
- Spring框架自动装配 Bean(三)
- Spring入门(Bean自动装配)
- spring基础-Bean的装配方式(三)自动装配
- 8.19(军训DAY 3)
- 华为机试-坐标移动
- Linux上面安装oracle11g的全过程
- 带环链表返回起始节点
- 通过ssh的公钥/私钥方式远程登录linux
- spring之如何创建bean(1、自动装配)
- FileDescriptor使用
- 换博客
- Linux命令date日期时间和Unix时间戳互转
- win10安装MySQL
- 城市列表
- stray'\273'解决办法
- SVN客户端与服务端安装详解
- poj1308