@Bean
来源:互联网 发布:php面向对象编程思想 编辑:程序博客网 时间:2024/05/17 08:03
@Bean 具有以下四个属性
- name -- 指定一个或者多个 Bean 的名字。这等价于 XML 配置中 <bean> 的 name 属性。
- initMethod -- 容器在初始化完 Bean 之后,会调用该属性指定的方法。这等价于 XML 配置中 <bean> 的 init-method 属性。
- destroyMethod -- 该属性与 initMethod 功能相似,在容器销毁 Bean 之前,会调用该属性指定的方法。这等价于 XML 配置中 <bean> 的 destroy-method 属性。
- autowire -- 指定 Bean 属性的自动装配策略,取值是 Autowire 类型的三个静态属性。Autowire.BY_NAME,Autowire.BY_TYPE,Autowire.NO。与 XML 配置中的 autowire 属性的取值相比,这里少了 constructor,这是因为 constructor 在这里已经没有意义了
- 。
@Bean 没有直接提供指定作用域的属性,可以通过 @Scope 来实现该功能,关于 @Scope 的用法已在上文列举。
下面讲解基于注解的容器初始化。AnnotationConfigApplicationContext 提供了三个构造函数用于初始化容器。
- AnnotationConfigApplicationContext():该构造函数初始化一个空容器,容器不包含任何 Bean 信息,需要在稍后通过调用其register() 方法注册配置类,并调用 refresh() 方法刷新容器。
- AnnotationConfigApplicationContext(Class<?>... annotatedClasses):这是最常用的构造函数,通过将涉及到的配置类传递给该构造函数,以实现将相应配置类中的 Bean 自动注册到容器中。
- AnnotationConfigApplicationContext(String... basePackages):该构造函数会自动扫描以给定的包及其子包下的所有类,并自动识别所有的 Spring Bean,将其注册到容器中。它不但识别标注 @Configuration 的配置类并正确解析,而且同样能识别使用 @Repository、@Service、@Controller、@Component 标注的类。
除了使用上面第三种类型的构造函数让容器自动扫描 Bean 的配置信息以外,AnnotationConfigApplicationContext 还提供了 scan()方法,其功能与上面也类似,该方法主要用在容器初始化之后动态增加 Bean 至容器中。调用了该方法以后,通常需要立即手动调用 refresh() 刷新容器,以让变更立即生效。
需要注意的是,AnnotationConfigApplicationContext 在解析配置类时,会将配置类自身注册为一个 Bean,因为 @Configuration 注解本身定义时被 @Component 标注了。因此可以说,一个 @Configuration 同时也是一个 @Component。大多数情况下,开发者用不到该 Bean,并且在理想情况下,该 Bean 应该是对开发者透明的。@Configuration 的定义如下所示:
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Component public @interface Configuration { String value() default ""; }
在一般的项目中,为了结构清晰,通常会根据软件的模块或者结构定义多个 XML 配置文件,然后再定义一个入口的配置文件,该文件使用 <import/> 将其他的配置文件组织起来。最后只需将该文件传给 ClassPathXmlApplicationContext 的构造函数即可。针对基于注解的配置,Spring 也提供了类似的功能,只需定义一个入口配置类,并在该类上使用 @Import 注解引入其他的配置类即可,最后只需要将该入口类传递给 AnnotationConfigApplicationContext。具体示例如下:@Configuration @Import({BookStoreServiceConfig.class,BookStoreDaoConfig.class}) public class BookStoreConfig{ … }
0 0
- bean
- bean
- Bean
- Bean
- bean
- Bean
- Bean
- Bean
- bean
- BEan
- @Bean
- Bean
- Bean
- bean
- Bean
- 模型Bean:Model Bean
- Session Bean(会话Bean)
- 会话 Bean(Session Bean)
- 缓存遇到的数据过滤与分页问题
- IOS 定位城市和切换城市
- 支付宝手机网站支付
- akka学习教程(十三) akka分布式
- (四十五)网络基础——OSI七层模型简介和TCP/IP四层模型及其通信过程
- @Bean
- jquery ajax 请求gb2312编码的问题
- C++ LPCTSTR
- qt编程简单的计算器
- NodeJS、NPM安装配置步骤(windows版本)
- Neutron dhcp agent创建网络过程
- setupUi多Ui界面整合
- Linux(CentOS)环境下安装SQL SERVER
- Android Studio中的 versionName