博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring @Bean注解的使用
阅读量:6681 次
发布时间:2019-06-25

本文共 2295 字,大约阅读时间需要 7 分钟。

转自;http://www.cnblogs.com/feiyu127/p/7700090.html

@Bean 的用法

@Bean是一个方法级别上的注解,,。添加的bean的id为方法名

定义bean

@Configurationpublic class AppConfig { @Bean public TransferService transferService() { return new TransferServiceImpl(); } }

这个配置就等同于之前在xml里的配置

bean的依赖

@bean 也可以依赖其他任意数量的bean,如果TransferService 依赖 AccountRepository,我们可以通过方法参数实现这个依赖

@Configurationpublic class AppConfig { @Bean public TransferService transferService(AccountRepository accountRepository) { return new TransferServiceImpl(accountRepository); } }

接受生命周期的回调

,也可以执行生命周期的回调函数, and @PreDestroy的方法。用法如下

public class Foo {    public void init() { // initialization logic } } public class Bar { public void cleanup() { // destruction logic } } @Configuration public class AppConfig { @Bean(initMethod = "init") public Foo foo() { return new Foo(); } @Bean(destroyMethod = "cleanup") public Bar bar() { return new Bar(); } }

默认使用javaConfig配置的bean,如果存在close或者shutdown方法,则在bean销毁时会自动执行该方法,如果你不想执行该方法,(destroyMethod="")来防止出发销毁方法

指定bean的scope

你能够使用@Scope注解来指定使用@Bean定义的bean

@Configurationpublic class MyConfiguration { @Bean @Scope("prototype") public Encryptor encryptor() { // ... } }

@Scope and scoped-proxy

spring提供了scope的代理,,默认是ScopedProxyMode.NO, 你可以指定为默认是ScopedProxyMode.INTERFACES或者默认是ScopedProxyMode.TARGET_CLASS。

以下是一个demo,好像用到了(没看懂这块)

// an HTTP Session-scoped bean exposed as a proxy@Bean@SessionScopepublic UserPreferences userPreferences() { return new UserPreferences(); } @Bean public Service userService() { UserService service = new SimpleUserService(); // a reference to the proxied userPreferences bean service.setUserPreferences(userPreferences()); return service; }

自定义bean的命名

默认情况下bean的名称和方法名称相同,你也可以使用name属性来指定

@Configurationpublic class AppConfig { @Bean(name = "myFoo") public Foo foo() { return new Foo(); } }

bean的别名

bean的命名支持别名,使用方法如下

@Configurationpublic class AppConfig { @Bean(name = { "dataSource", "subsystemA-dataSource", "subsystemB-dataSource" }) public DataSource dataSource() { // instantiate, configure and return DataSource bean... } }

bean的描述

有时候提供bean的详细信息也是很有用的,bean的描述可以使用 @Description来提供

@Configurationpublic class AppConfig { @Bean @Description("Provides a basic example of a bean") public Foo foo() { return new Foo(); } }

转载于:https://www.cnblogs.com/sharpest/p/7748627.html

你可能感兴趣的文章
Canal简介及配置说明
查看>>
mybatis知识点
查看>>
jQuery easyui
查看>>
flex datagrid 数据导出
查看>>
VARCHAR2长度限制
查看>>
rabbitMQ消息队列原理
查看>>
Nagios之安装篇
查看>>
平衡二叉树中第k小的数 Kth Smallest Element in a BST
查看>>
我的友情链接
查看>>
Vyos防火墙功能配置
查看>>
Redhat内核编译
查看>>
Hyper-V 2016 系列教程4 Hyper-V 虚拟机的新建
查看>>
Flask开发
查看>>
trickle 限制用户空间带宽
查看>>
SQL事务
查看>>
GRE配置案例实现远程网络通信
查看>>
不用linux作为桌面的N个理由
查看>>
Rabbitmq学习之路3-cluster
查看>>
iptables实现NAT(网络搜索整理)
查看>>
关于ip地址
查看>>