spring IOC bean配置方法
来源:互联网 发布:ubuntu anaconda 编辑:程序博客网 时间:2024/06/16 08:34
spring IOC主要有XML和注解两种方式,XML配置可以基于类名、工厂方法(静态工厂方法和实例工厂方法)、FactoryBean。
一、XML配置
1、基于类名
<!--
class为全类名,
id为spring容器创建的bean对象id,
init-method和destroy-method分别为初始化和销毁时调用的方法,
scope定义bean的作用域,默认为singleton,只创建一次,如果要每次使用的时候都创建,就是用prototype
-->
<bean id="helloWorld" class="com.HelloWorld"
init-method="init" destroy-method="destory" scope="singleton">
</bean>
1.1 通过属性注入
<bean id="helloWorld" class="com.HelloWorld"
init-method="init" destroy-method="destory" scope="singleton">
<property name="name" value="spring"></property>
</bean>
<property>元素为bean的属性赋值,name为属性名称,value为值
1.2通过构造函数注入
构造函数如下
public HelloWorld(String name,int a) {
System.out.println("Hello world constructor...");
}
配置文件如下
<bean id="helloWorld" class="com.HelloWorld"
init-method="init" destroy-method="destory" scope="prototype">
<constructor-arg value="spring"></constructor-arg>
<constructor-arg value="100"></constructor-arg>
</bean>
默认constructor-arg顺序必须与构造函数的参数顺序一致,如果顺序不一致,就要通过index属性来指定,如下
<bean id="helloWorld" class="com.HelloWorld"
init-method="init" destroy-method="destory" scope="prototype">
<constructor-arg value="100" index="1"></constructor-arg>
<constructor-arg value="spring" index="0"></constructor-arg>
</bean>
如果还有另外一个构造函数,第二个参数是double型的,那个100这个值就都可以匹配上,此时,可以通过type属性来指定,如下:
<bean id="helloWorld" class="com.HelloWorld"
init-method="init" destroy-method="destory" scope="prototype">
<constructor-arg value="100" index="1" type="int"></constructor-arg>
<constructor-arg value="spring" index="0"></constructor-arg>
</bean>
2、工厂方法
2.1 静态工厂方法
首先创建具有静态方法的工厂类
public class StaticFactory {
public static HelloWorld getHelloWorld(String name) {
return null;
}
}
配置文件如下
<!--
class必须是工厂的全类名
factory-method为工厂的静态方法
constructor-arg提供静态方法所必须的参数
-->
<bean id="helloWorld" class="com.StaticFactory" factory-method="getHelloWorld">
<constructor-arg value="helloWorld"></constructor-arg>
</bean>
2.2 实例工厂方法
首选创建实例工厂类
public class InstanceFactory {
public HelloWorld getHelloWorld(String name) {
return null;
}
}
配置如下
<!-- 首先必须要有实例工厂的bean -->
<bean id="factory" class="com.InstanceFactory"></bean>
<!-- factory-bean: 指定创建该bean的实例工厂
factory-method: 指定工厂方法
constructor-arg: 指定工厂方法的参数
-->
<bean id="helloWorld" factory-bean="factory" factory-method="getHelloWorld">
<constructor-arg value="helloWorld"></constructor-arg>
</bean>
2.3 FactoryBean
首先创建FactoryBean
public class HelloFactoryBean implements FactoryBean<HelloWorld> {
// 返回bean对象
@Override
public HelloWorld getObject() throws Exception {
// TODO Auto-generated method stub
return new HelloWorld("Hello World", 1);
}
@Override
public Class<?> getObjectType() {
// TODO Auto-generated method stub
return HelloWorld.class;
}
@Override
public boolean isSingleton() {
// TODO Auto-generated method stub
return true;
}
}
配置如下
<!--
class指定FactoryBean的全类名
通过getObject方法获得bean
-->
<bean id="helloWorld" class="com.HelloFactoryBean">
</bean>
二、注解
注解包含以下几类
@Comonent 表示受Spring管理的基本组件
@Respository 表示受Spring管理的持久层组件
@Service 表示受Spring管理的业务层组件
@Controller 表示受Spring管理的表现层组件
通过注解扫描到的组件,默认名称是类名的第一个字母小写,如果要指定名称,就通过value属性指定,如@Component("User"),value为默认属性,可以省略写。
配置文件如下
<!--
base-package 指定扫描的包路径,其子路径会同时被扫描
resource-pattern 可以指定符合某些格式的类被扫描
-->
<context:component-scan base-package="com" resource-pattern="*.class"></context:component-scan>
context:component-scan还可以使用context:exclude-filter子节点来排除某些类,用context:include-filter来只包含某些类。
只包含某些类的写法:
<!-- use-default-filters 这个默认是true,如果要只包含某些类,就将其设置为false -->
<context:component-scan
base-package="com.generic" use-default-filters="false">
<!--
type:使用annotation表示 根据注解来区分
expression:是注解的引用包名称
-->
<context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>
</context:component-scan>
排除某些类的写法:
<!-- use-default-filters 这个默认是true,如果只排除某些类,将其设置为true,或不填写 -->
<context:component-scan
base-package="com.generic" use-default-filters="true">
<!--
type:使用annotation表示 根据注解来区分
expression:是注解的引用包名称
-->
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
</context:component-scan>
- spring IOC bean配置方法
- 配置Spring Ioc中的bean
- 在Spring IOC容器中配置Bean
- spring 8 bean配置--IOC容器中bean的生命周期
- spring IOC装配bean
- Spring IOC/Bean
- spring Ioc & Bean
- Spring Ioc装配Bean
- spring 工厂方法配置bean
- Spring--Bean 的配置方法
- IOC-bean的配置
- spring中Bean的几种配置(ioc原理续)
- spring中Bean的几种配置(ioc原理续)
- 【Spring】IOC之基于注解的配置bean(上)
- 10002--Spring 中的 Bean 配置--IOC 和 DI
- Spring学习(九)使用ioc注解方式配置bean
- Spring学习笔记---2.1-IOC容器解析Bean配置信息
- Spring IoC学习笔记(1):注解配置Bean
- 在MyEclipse或eclipse中如何查找Tomcat的安装路径
- 最全面的前端学习资源汇总,拿走不谢!
- 关于scanf与printf里的%*d
- C语言计算文件的md5值
- 升级node与npm
- spring IOC bean配置方法
- [QT开发]网络编程中,发送请求成功,无法接收回信
- 转自博客园-Nerxious大神的对于匿名内部类的总结
- java支付宝网站支付
- 4-首次登入与在线求助
- Linux 录制gif文件
- android之MVP设计模式详解
- [Leetcode]234. Palindrome Linked List
- Linux回到上级文件的命令