Link Search Menu Expand Document

Spring in Action

Chpt 2: Wiring beans

Auto configuration

  • @Autowired works on both constructor and method (will create dependent beans, and throw error if can't find)
  • @Autowired is spring specific, use @Inject from java, mostly interchangable
  • when using @ComponentScan, better to use basePackageClasses to be refactor proof

Manual wiring:

  • @bean by default ID = method name. override it with name=

  • by default, all beans in spring are singletons.

    @Bean
    public CompactDisc sgtPeppers(){
      return new SgtPappers();
    }
    

    if directly call the method that a bean annotation is on, e.g. sgtPepeprs() will return the singleton rather than creating another instance.

    Chpt 3: Advanced wiring

  • @Profile("dev") annotation for beans only created when active profiles include dev

  • @Conditional(MagicExistsCondition.class) for custom conditions

    • Condition interface comes with 2 params: matches(ConditionContext context, AnnotatedTypeMetadata metadata)
    • ConditionContext
      • bean registry: bean definitions
      • bean factory: presence of beans
      • environment: env varialbes
      • resource loader: resources loaded
      • class loader: class loaded
  • disambiguating beans

    • @Primary

    • @Qualifier("cold)

    • Use custom qualifier annotations to allow multiple qualifiers - @Cold

      @Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE})
      @Retention(RetentionPolicy.RUNTIME)
      @Qualifier
      public @interface Cold {
      }
      
  • @Scope

    • singleton
    • prototype - created each time is injected
    • session - in web app, one for each session. e.g. shopping cart
    • request
      • scope proxy

Chpt4: Aspect oriented Spring

  • basic concepts:

  • unlike AspectJ, spring is proxy based, and only supports method interception

  • wrap method options:

    • @After
    • @AfterReturning
    • @AfterThrowing
    • @Around
    • @Before
  • also possible to add methods using Introduction