spring常用注解

来源:互联网 发布:pd1治疗哪些癌症知乎 编辑:程序博客网 时间:2024/06/06 11:41

@Component:通用注解,用于任何Bean
@Repository:用于注解DAO层(持久层)
@Service:用于注解Service类(服务层)
@Controller:注解Controller类(控制层)

@Scope(”prototype”)默认:singleton,用于类
singleton作用域:Spring IoC容器中只会存在一个共享的Bean实例,并且所有对Bean的请求,只要id与该Bean定义相匹配,则只会返回该Bean的同一实例。singleton作用域是Spring中的缺省作用域。
prototype作用域:prototype作用域的Bean会导致在每次对该Bean进行请求(将其注入到另一个Bean中,或者以程序的方式调用容器的getBean()方法时都会创建一个新的Bean实例。对于具有prototype作用域的Bean,有一点很重要,即Spring不能对该Bean的整个生命周期负责。具有prototype作用域的Bean创建后交由调用者负责销毁对象回收资源。
总结一下就是:
singleton 只有一个实例,也即是单例模式。
prototype访问一次创建一个实例,相当于new。
应用场合:
1.需要回收重要资源(数据库连接等)的事宜配置为singleton,如果配置为prototype需要应用确保资源正常回收。
2.对有状态的Bean应使用prototype作用域,而对无状态的Bean则应该使用singleton作用域。
(ps:无状态的bean:提供工具类的函数对象,仅仅提供调用服务;
有状态的bean:维持了一个会话的状态,每一次调用都会改变会话的状态。)

@Required:适用于bean属性的setter方法
这个注解仅仅表示,受影响的bean属性必须在配置时被填充,通过在bean定义或通过自动装配一个明确的属性值

@Autowired:可将@Autowired注解理解为”传统”的setter方法,可用于构造器或成员变量
默认情况下,如果因找不到合适的bean将会导致autowiring失败抛出异常,可以通过设置@Autowired(required=false)的方式避免。
每个类只有一个构造器被标记为required=ture,因为@Autowired的必要属性,建议使用@Required注解
可以使用@Autowired注解那些众所周知的解析依赖性接口, BeanFactoryAware, ApplicationContext, Environment, ResourcesLoader, ApplicationEventPublisher ,MessageSource
可以通过添加注解给需要该类型的数组的字段或方法,以提供ApplicationContext中所有特定类型的bean
可以用于装配key为String的Map

@Inject等效于@Autowired,可以使用于类,属性,方法,构造器

@Qualifier:按类型(type)自动装配可能多个bean实例的情况,可以使用Spring的@Qualifier注解缩小范围(或指定唯一),也可以用于指定单独的构造器参数或方法的参数(多个),可用于注解集合类型变量, 如:@Qualifier(“beanimplOne”)

@Resource:通过名字进行注解注入,可用于集合或者Map类型的bean(@Autowired并不适用),
适用于成员变量,只有一个参数的setter方法,所以在目标是构造器或一个多参数方法时,最好的方式是使用@Qualifier注解;
@Resource有一个name属性,如 : @Resource(name = “myBean”),如果没有显式地指定@Resource的name,默认的名称是从属性名或者setter方法得出

@Named:使用特定名称进行依赖注入,使用@Named。@Named与@Component是等效的,和@Qualifier相似

原创粉丝点击