zoukankan      html  css  js  c++  java
  • [Java Sprint] Spring Configuration Using Java

    There is no applicationContext.xml file. 

    • Too much XML
    • Namespaces helped
    • Enter Java Configuration

    Create main/java/com.pluralsight/AppConfig.java:

    1. Setter Injection: 

    package com.pluralsight;
    
    import com.pluralsight.repository.CustomerRepository;
    import com.pluralsight.repository.HibernateCustomerRepositoryImpl;
    import com.pluralsight.service.CustomerService;
    import com.pluralsight.service.CustomerServiceImpl;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class AppConfig {
    
        @Bean(name = "customerService")
        public CustomerService getCustomerService() {
            CustomerServiceImpl service = new CustomerServiceImpl();
    
            // Setter Injection
            service.setCustomerRepository(getCustomerRepository());
            return service;
        }
    
        @Bean(name = "customerRepository")
        public CustomerRepository getCustomerRepository () {
            return new HibernateCustomerRepositoryImpl();
        }
    }

    Setter Injection for Service:

    package com.pluralsight.service;
    
    import com.pluralsight.model.Customer;
    import com.pluralsight.repository.CustomerRepository;
    
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service("customerService")
    public class CustomerServiceImpl implements CustomerService {
    
        private CustomerRepository customerRepository;
    
        // Setter Injection
        public void setCustomerRepository(CustomerRepository customerRepository) {
            this.customerRepository = customerRepository;
        }
    
        @Override
        public List<Customer> findAll() {
            return customerRepository.findAll();
        }
    
    }

    2. Constructor Injection: 

    package com.pluralsight;
    
    import com.pluralsight.repository.CustomerRepository;
    import com.pluralsight.repository.HibernateCustomerRepositoryImpl;
    import com.pluralsight.service.CustomerService;
    import com.pluralsight.service.CustomerServiceImpl;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class AppConfig {
    
        @Bean(name = "customerService")
        public CustomerService getCustomerService() {
            CustomerServiceImpl service = new CustomerServiceImpl(getCustomerRepository());
            return service;
        }
    
        @Bean(name = "customerRepository")
        public CustomerRepository getCustomerRepository () {
            return new HibernateCustomerRepositoryImpl();
        }
    }
    package com.pluralsight.service;
    
    import com.pluralsight.model.Customer;
    import com.pluralsight.repository.CustomerRepository;
    
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service("customerService")
    public class CustomerServiceImpl implements CustomerService {
    
        private CustomerRepository customerRepository;
    
        // Constructor Injection
        public CustomerServiceImpl(CustomerRepository customerRepository) {
            this.customerRepository = customerRepository;
        }
    
        @Override
        public List<Customer> findAll() {
            return customerRepository.findAll();
        }
    
    }

    3. Autowired:

    It would be good to add @Service and @Repository to each java files:

    @Service("customerService")
    public class CustomerServiceImpl implements CustomerService {
    @Repository("customerRepository")
    public class HibernateCustomerRepositoryImpl implements CustomerRepository {

    Add @ComponentScan({"com.pluralsight"}) to the AppConfig.java:

    package com.pluralsight;
    
    import com.pluralsight.repository.CustomerRepository;
    import com.pluralsight.repository.HibernateCustomerRepositoryImpl;
    import com.pluralsight.service.CustomerService;
    import com.pluralsight.service.CustomerServiceImpl;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    @ComponentScan({"com.pluralsight"})
    public class AppConfig {
    /*
        @Bean(name = "customerService")
        public CustomerService getCustomerService() {
            CustomerServiceImpl service = new 
            return service;
        }
    
        @Bean(name = "customerRepository")
        public CustomerRepository getCustomerRepository () {
            return new HibernateCustomerRepositoryImpl();
        }*/
    }

    The prower of Autowired is that, we don't need to define any @Bean in AppConfig.

  • 相关阅读:
    putty的复制 技巧
    linux下的yum命令详解
    mysql修改密码
    我的阅读编程书籍的好方法
    WINDOWS下VIM配置
    Debian下VSFTPD配置
    一个远程访问MySQL的错误(2003, 10061)的解决
    auto_increment
    hello,world!
    scss文件中使用深度选择器/deep/报错 Expected selector Jim
  • 原文地址:https://www.cnblogs.com/Answer1215/p/9539792.html
Copyright © 2011-2022 走看看