注入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注解