spring获取javabean的xml形式和注解形式
一、用xml文件方式管理javabean
1. 创建一个xml配置文件
2. 将一个bean交由spring创建并管理
<!--1. 创建一个xml配置文件-->
<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
xsi:schemalocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--2. 将一个bean交由spring创建并管理-->
<bean id="javabean" class="com.gblfy.ioc.javabean"/>
</beans>
注:用id作为bean的唯一标识 用class来指定这个bean是哪个类
3. 获取spring上下文,获取bean
applicationcontext context =
new classpathxmlapplicationcontext("applicationcontext.xml");
获取bean
javabean javabean = context.getbean("javabean",javabean.class);
二、用注解获取javabean
1. 创建一个class配置java文件
2. 将一个bean交由spring创建并管理
//1 .创建一个class配置java文件
@configuration
public class configuation {
//2. 将一个bean交由spring创建并管理
@bean(value = "bean2")
public javabean javabean(){
return new javabean();
}
}
3. 获取spring上下文,后去javabean
//3. 获取spring上下文
applicationcontext context =
new annotationconfigapplicationcontext(configuation.class);
//获取 bean
javabean javabean = context.getbean("javabean",javabean.class);
system.out.println("javabean"+javabean);
总结:都是初始化spring上下文获取javabean
三、获取javabean对比


上面只是由xml形式获取javabean变成了注解形式,但是,代码量没有减少,那如何简化呢?
四、简化注解获取javabean
1.在javabean类上添加@component注解
@component
public class javabean { }
2. 在配置java类上添加@componentscan注解,value 属性设置spring扫描那些bean
//创建一个class配置java文件
@configuration
@componentscan(value = "com.gblfy.ioc")
public class configuation { }
3. 初始化spring上下文,获取bean就可以了
//获取spring上下文
applicationcontext context =
new annotationconfigapplicationcontext(configuation.class);
//huoqu bean
javabean javabean = context.getbean("javabean",javabean.class);
system.out.println("javabean"+javabean);
原理:通过@componentscan注解来告知spring,让spring扫描这个包结构下的所有class
那么扫描的原则是什么呢?
扫描原则:在刚才包结构下类上有@component注解的class,这些class将交由spring来管理,并由spring来为我们实例化这些class的javabean。
javabean的id默认为类名小写,如果,想自定义bean的id在@component的value 属性中添加value即可;
@component(value = "javabeanid")
public class javabean { }



配置包扫描,在类上添加注解,就可以交由spring来管理,并进行实例化
注解:
| 注解位置 | 注解名称 |
|---|---|
| controller层 | @controller |
| service层 | @service |
| 持久层 | @repository |
| 其它层 | @component |
依赖附上
<dependencies>
<dependency>
<groupid>org.springframework</groupid>
<artifactid>spring-core</artifactid>
<version>5.1.8.release</version>
</dependency>
<dependency>
<groupid>org.springframework</groupid>
<artifactid>spring-context</artifactid>
<version>5.1.8.release</version>
</dependency>
<dependency>
<groupid>junit</groupid>
<artifactid>junit</artifactid>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论