[Java Sprint] AutoWire

Previous we have seen constructore injection: https://www.cnblogs.com/Answer1215/p/9484872.html

 

It would be easier to using autowire to reduce the code, and autowite has four different types:

  • byType
  • byName
  • constructor
  • no

 

First let's see how to use 'autowire="constructor"':

    <bean name="customerService" class="com.pluralsight.service.CustomerServiceImpl" autowire="constructor">
        <!-- <constructor-arg index="0" ref="foo"></constructor-arg> -->
    </bean>

We comment out constructor injection and using autowire.

 

byName:

复制代码
package com.pluralsight.service;

import com.pluralsight.model.Customer;
import com.pluralsight.repository.CustomerRepository;

import java.util.List;

public class CustomerServiceImpl implements CustomerService {


    //private CustomerRepository customerRepository = new HibernateCustomerRepositoryImpl();
    private CustomerRepository customerRepository;

    public CustomerServiceImpl () {

    }

    public CustomerServiceImpl (CustomerRepository customerRepository) {
        this.customerRepository = customerRepository;
    }

 // if set autowire by name, so in applicationContext <bean name="customerRepository" ..>
// if <bean name="foo" ..> then this function should be rename public void setFoo(CustomerRepository customerRepository)
    public void setCustomerRepository(CustomerRepository customerRepository) {
        this.customerRepository = customerRepository;
    }


    @Override
    public List<Customer> findAll() {
        return customerRepository.findAll();
    }

}
复制代码
复制代码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- Define a class, using implementation-->
    <bean name="customerRepository" class="com.pluralsight.repository.HibernateCustomerRepositoryImpl"></bean>


    <!-- Setter injection: Inject HibernateCustomerRepositoryImpl to customerRepository -->
    <bean name="customerService" class="com.pluralsight.service.CustomerServiceImpl" autowire="byName">
        <!--<property name="customerRepository" ref="foo"></property>-->
        <!-- <constructor-arg index="0" ref="foo"></constructor-arg> -->
    </bean>
</beans>
复制代码

 

byType:

    <bean name="customerService" class="com.pluralsight.service.CustomerServiceImpl" autowire="byType">
        <!--<property name="customerRepository" ref="foo"></property>-->
        <!-- <constructor-arg index="0" ref="foo"></constructor-arg> -->
    </bean>

It doesn't matter we use 'name="customerService"' or 'name="foo"', because it finding by type, so still will work.

posted @   Zhentiw  阅读(275)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2017-08-16 [Angular] Using the Argon 2 Hashing Function In Our Sign Up Backend Service
2016-08-16 [React Fundamentals] Component Lifecycle - Updating
2016-08-16 [React Fundamentals] Component Lifecycle - Mounting Usage
2016-08-16 [React Fundamentals] Component Lifecycle - Mounting Basics
点击右上角即可分享
微信分享提示