MSSE SENG 5199

Course Materials for the MSSE Web Application Development Course

slidenumbers: true

Spring Services

Mike Calvo

mike@citronellasoftware.com


@Bean


Example Bean

@Configuration
class AppConfig {

    @Bean
    TransferService transferService() {
        return new TransferServiceImpl()
    }

}

Bean Dependencies

@Configuration
class AppConfig {

    @Bean
    TransferService transferService(AccountRepository accountRepository) {
        return new TransferServiceImpl(accountRepository)
    }

}

Bean Lifecycle Events


Example Lifecycle implementation

public class Foo {
    public void init() {
        // initialization logic
    }
}

public class Bar {
    public void cleanup() {
        // destruction logic
    }
}

@Configuration
public class AppConfig {

    @Bean(initMethod = "init")
    public Foo foo() {
        return new Foo();
    }

    @Bean(destroyMethod = "cleanup")
    public Bar bar() {
        return new Bar();
    }

}

Bean Scope


@Scope

@Configuration
class MyConfiguration {

    @Bean
    @Scope("prototype")
    Encryptor encryptor() {
        // ...
    }

}

Spring Components


Service Layer


@Service


Spring Transactional Support


Declarative


Programmatic Transactions


Example Service

@Service
class ArtistService {

  @Autowired
  ArtistRepository artistRepository

  @Transactional
  Artist findOrCreateArtist(String name) {
    def artist = artistRepository.findByName(name)

    if (!artist) {
      artist = artistRepository.save(new Artist(name: name))
    }

    return artist
  }
}

Example Service (Programmatic)

@Service
class ArtistService {

  @Autowired
  ArtistRepository artistRepository

  @Autowired
  PlatformTransactionManager platformTransactionManager

  @Autowired
  TransactionTemplate transactionTemplate

  Artist findOrCreateArtist(String name) {
    transactionTemplate.execute {
      def artist = artistRepository.findByName(name)

      if (!artist) {
        artist = artistRepository.save(new Artist(name: name))
      }

      return artist
    }
  }
}

Benefits of Services