Spring常用注解

注入bean属性相关注解

@Autowired 自动装配 (@Autowired(required=false))允许null 值

@Autowired

@Qualifier("bmwCar")  @Qualifier注解来指定注入Bean的名称

@Resource 与@Autowired注解作用非常相似

@Resource(name="tiger")

@Resource(type=Monkey.class)

@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之间的耦合

创建bean对象的属性

@Service用于标注业务层组件  

@Controller用于标注控制层组件(如struts中的action)  

@Repository用于标注数据访问组件,即DAO组件   

@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注  

@Scope配置bean的作用域(用在类上)

singleton:单例,即容器里只有一个实例对象。

prototype:多对象,每一次请求都会产生一个新的bean实例,Spring不无法对一个prototype bean的整个生命周期负责,容器在初始化、配置、装饰或者是装配完一个prototype实例后,将它交给客户端,由程序员负责销毁该对象,不管何种作用域,容器都会调用所有对象的初始化生命周期回调方法,而对prototype而言,任何配置好的析构生命周期回调方法都将不会被调用

request:对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效

@Component

@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)// @Scope(value =WebApplicationContext.SCOPE_REQUEST)

public class Commonprj {

配置类相关

@Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。

等价 与XML中配置beans,相当于Ioc容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean,与xml中配置的bean意思一样,@Configuration注解组合了@Component注解

@Configuration注解的类必需<context:component-scanbase-package=”com.ccc,com.ccc2,com.ccc3”/>扫描.

@ComponentScan用于配置扫描

切面(AOP)相关注解

@Aspect声明一个切面(类上面)

@After 方法上

@After("execution(* com.abc.service.*.many*(..))")

@Before方法上

@Before("controllerAspect()") //指向一个切入点

@Before("execution(* com.abc.service.*.many*(..))")

@Before("@annotation(com.annotation.SystemControllerLog)") //指向一个切入点

@Around方法上,之前之后执行

@Around("execution(* com.abc.service.*.many*(..))")

@AfterReturning

@AfterReturning(pointcut="execution(* com.abc.service.*.many*(..))", returning="returnValue")

@Pointcut方法上

@Pointcut("@annotation(com.annotation.SystemControllerLog)")

public void controllerAspect() {

}

@EnableAspectjAutoPrxy(在java配置类@Configuration中使用) 开启Spring对AspectJ的支持,或使用xml开启

@Value注解

为了简化从properties里取配置,可以使用@Value, 可以properties文件中的配置值

@Value不能给静态变量设置值,如果要设置静态变量,只能通过对应变量的非静态set方法赋值就可以了,在非静态方法setEnv前使用@Value注解

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值