一、作用在类上:
使用@Component、@Repository、@Service、@Controller等注解创建bean时
如果不指定bean名称,bean名称的默认规则是类名的首字母小写,如UserService->userService
如果类名前两个或以上个字母都是大写,那么bean名称与类名一样,如RBACUser - >RBACUser
二、作用在方法上:
@Bean 作用于方法上创建bean
如果不指定bean名称,bean名称的默认规则是 “方法名(首字母小写)”的配置方式
三、spring @Bean 注解修饰带参数方法时,参数取值
/**
* 自定义Realm
*/
@Bean
public UserRealm userRealm(EhCacheManager cacheManager)
{
UserRealm userRealm = new UserRealm();
userRealm.setAuthorizationCacheName(Constants.SYS_AUTH_CACHE);
userRealm.setCacheManager(cacheManager);
return userRealm;
}
如上,有参数 EhCacheManager cacheManager,若 spring 容器中只有一个 EhCacheManager 类型的 bean,则不论参数取名为何都是按类型取 EhCacheManager 的 bean 为参数,若 Spring 容器有多个类型为 EhCacheManager 的 bean 则参数取名必须为多个 bean 中的一个,否则报错。