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.

  • 相关阅读:
    GUI搞定
    “你说,会有来世吗?”少女露出悲伤的笑容,低声说道,“不管过了多少年,我都会一直在这里等你。如果可以的话,下辈子再和你一起,一起写GUI吧。”
    每个负责写GUI的女孩上辈子都是折翼天使
    更新了XmlParser类
    COCOS2D-X学习笔记(一)-----Node类的学习
    SwipeRefreshLayout的简要说明及使用demo
    Android的图片压缩并上传
    ActionBarSherlock的学习笔记(四) ------------ ActionBarSherlock中的搜索及SearchView的使用
    ActionBarSherlock的学习笔记(三) ------------ ActionBarSherlock中的overflow及item的点击事件
    ActionBarSherlock的学习笔记(二) ------------ 创建ActionBarSherlock
  • 原文地址:https://www.cnblogs.com/Answer1215/p/9539792.html
Copyright © 2011-2022 走看看