Spring中的常用注解
1、@Autowired
自动装配,其作用是为了消除代码Java代码里面的getter/setter与bean属性中的property。当然,getter看个人需求,如果私有属性需要对外提供的话,应当予以保留。@Autowired默认按类型匹配的方式,在容器查找匹配的Bean,当有且仅有一个匹配的Bean时,Spring将其注入@Autowired标注的变量中。
如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:
@Autowired @Qualifier(“personDaoBean”) 存在多个实例配合使用
2、@Service用于标注业务层组件(注入dao)
@Service(“userService”)注解是告诉Spring,当Spring要创建UserServiceImpl的的实例时,bean的名字必须叫做”userService”,这样当Action需要使用UserServiceImpl的的实例时,就可以由Spring创建好的”userService”,然后注入给Action:在Action只需要声明一个名字叫“userService”的变量来接收由Spring注入的”userService”即可
3、@Repository用于标注数据访问组件,即DAO组件。
@Repository(value=”userDao”)注解是告诉Spring,让Spring创建一个名字叫“userDao”的UserDaoImpl实例。
4、 @Configuration
把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。
5、 @Scope
作用域 eg:@Scope(‘protopty’)
6、 @Lazy(true)
表示延迟初始化
7、 @Service
用于标注业务层组件、
8、 @Controller
用于标注控制层组件(如struts中的action)
9、 @Repository
用于标注数据访问组件,即DAO组件。
10、 @Component
泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
11、 @Scope
用于指定scope作用域的(用在类上)
12、 @PostConstruct
用于指定初始化方法(用在方法上)
13、 @PreDestory
用于指定销毁方法(用在方法上)
14、 @DependsOn
定义Bean初始化及销毁时的顺序
15、 @Primary
自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
16、 @Qualifier
(指定注入Bean的名称)
17、 @Resource
默认按名称装配,当找不到与名称匹配的bean才会按类型装配。
@Resource注解与@Autowired注解作用非常相似
@Resource的装配顺序:
(1)、@Resource后面没有任何内容,默认通过name属性去匹配bean,找不到再按type去匹配
(2)、指定了name或者type则根据指定的类型去匹配bean
(3)、指定了name和type则根据指定的name和type去匹配bean,任何一个不匹配都将报错
@Autowired和@Resource两个注解的区别:
(1)、@Autowired默认按照byType方式进行bean匹配,@Resource默认按照byName方式进行bean匹配
(2)、@Autowired是Spring的注解,@Resource是J2EE的注解,这个看一下导入注解的时候这两个注解的包名就一清二楚了
Spring属于第三方的,J2EE是Java自己的东西,因此,建议使用@Resource注解,以减少代码和Spring之间的耦合。
18、 @PostConstruct
初始化注解
19、 @PreDestroy
摧毁注解 默认 单例 启动就加载
20、 @Async
异步方法调用