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.

  • 相关阅读:
    npm install 报错 error Unexpected end of JSON input while parsing near '...sShrinkwrap":false,"d' 解决办法
    Vue父组件如何调用子组件(弹出框)中的方法的问题
    jquery radio的操作
    MYSQL 在当前时间加上或减去一个时间段
    jenkins 相关默认信息
    springboot中@webfilter注解的filter时注入bean都是null
    srpingboot2 session过期时间设置
    springboot 以jar方式在linux后台运行
    Java获取当前运行方法所在的类和方法名
    IntelliJ IDEA中Java类注释
  • 原文地址:https://www.cnblogs.com/Answer1215/p/9539792.html
Copyright © 2011-2022 走看看