Spring注解方法学习笔记

来源:互联网 发布:淘宝api 编辑:程序博客网 时间:2024/06/08 10:20

@Conponent


@Repostory  @Service  @Controller



<context:component-scan base-package=".....">   可以扫描类上注解

<context:annotation-config/>   只在类方法和类成员上扫描

前者包含后者,


默认情况下,类被自动发现并注册bean的条件是:使用@Component@Repository @Service @Controller注解或者使用@Component的自定义注解



定义bean

扫描过程中组件被自动检测,那么Bean名称是有BeanNameGenerator生成的(几种注解方法都会有一个name属性用于显式设置Bean Name)

@Service(“myMovieLister”)public class SimoleMoviceLister{}


@Repositorypublic class MovieFinderImpl implements MovieFinder{}
自定义类名为基础,头字母小写 为   movieFinderImpl


作用域(Scope)

@Scope(“singlton”)



@Autowired

可以用在set方法上,成员方法和构造器上


@Qualifier

按类型自动装配可能有多个bean实例的情况,可以使用Spring的@Qualifier注解缩小范围,也可以用于指定单独的构造器参数或方法参数

可用于注解集合类型变量
@Qualifier“(“main”)

private MovieCatalog movieCatalog;      bean id为main的接口实现类

@Autowired适用于字段,构造器,多参数的方法,这些允许在参数级别使用@Qualifier注解缩小范围

@Resource适用于成员变量,只有一个参数的setter方法,所以在目标是构造器或一个多参数方法时,最好使用@Qualifier



增加配置文件

xml形式:  <context:propertu-placeholder location="classpath:/com/acme/jdbc.properties"/>

注解形式:

@Configuration@ImportResource("classpath:/com/acme/properties-config.xml")public class AppConfig{  @Value("$(jdbc.url)")  private String url;}



***************************************************************************************************************************************

@Component  @Service  @Repostory @Controller  

@Autowired有个属性(required=false)找不到时也不报错

@Qualifier(“name”)有多个同类型的bean时,指定注入bean的名称   和@Autowired结合使用,自动注入策略就从ByType变成了ByName

@Scope(singlton  propertype)


JSR-250规范定义的注解,   使用JSR-250要注册一个BeanPostProcessor

<bean class="org.springframe.comtext.annotation.CommonAnnotationBeanPostProcessor"/>

@Resource  要引入javax.annotation

@PostConstruct

@PreDestroy


JSR-330规范

@Inject  要引入javax.inject