Spring 4.0.2 学习笔记(2) - 自动注入及properties文件的使用

简介: 接上一篇继续, 学习了基本的注入使用后,可能有人会跟我一样觉得有点不爽,Programmer的每个Field,至少要有一个setter,这样spring配置文件中才能用...来注入. 能否不要这些setter方法? 答案是Yes 一、为Spring配置文件,添加annotation支持,以及 de...

上一篇继续, 学习了基本的注入使用后,可能有人会跟我一样觉得有点不爽,Programmer的每个Field,至少要有一个setter,这样spring配置文件中才能用<property>...</property>来注入. 能否不要这些setter方法? 答案是Yes

一、为Spring配置文件,添加annotation支持,以及 default-autowire属性

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd"
       default-autowire="byName">

    <context:annotation-config/>

    <bean id="jimmy" class="com.cnblogs.yjmyzz.domain.Programmer"/>

    <bean id="computerlist" class="java.util.ArrayList">
        <constructor-arg>
            <list>
                <bean class="com.cnblogs.yjmyzz.domain.MacBook"/>
                <bean id="t60" class="com.cnblogs.yjmyzz.domain.ThinkPad"/>
            </list>
        </constructor-arg>
    </bean>

    <bean id="wangcai" class="com.cnblogs.yjmyzz.domain.Dog"/>

    <bean id="jimmy_name" class="java.lang.String">
        <constructor-arg>
            <value>jimmy.yang</value>
        </constructor-arg>
    </bean>

</beans>

 注: 相对原来的版本,有几个小变化:

a) 最开始的xml声明部分,添加了xmlns:context

b) default-autowired设置为byName,运行时,将通过配置文件中,bean的id/name,来实现自动注入(后面会有代码演示)

c) 添加了<context:annotation-config/> ,这表明Spring允许在java类中,可以通过在field成员上,通过注解自动注入,而不再需要在配置文件中,手动指定property注入

d) 名为jimmy的bean,去掉<property>...</property>的注入配置

那么,问题来了,运行时,jimmy如何得到name,pet,computers这些属性的实例呢?

 

二、使用@Resource自动注入

Spring支持好几种注解自动注入,比如@Inject,@Resource,@Autowired,这里只演示@Resource这一种

package com.cnblogs.yjmyzz.domain;
import javax.annotation.Resource;

import java.util.List;
public class Programmer {

    @Resource(name = "jimmy_name")
    private String name;

    @Resource(name = "wangcai")
    private Pet pet;

    @Resource(name = "computerlist")
    private List<Computer> computers;


    public void show() {
        System.out.print("My name is " + name);
        System.out.print(", and I have " + computers.size() + " computer" + (computers.size() > 1 ? "s" : "") + ":");
        System.out.println();
        for (Computer c : computers) {
            c.showInfo();
        }
        System.out.println("And I have a pet, everyday,when I go home, it will welcome me by  ");
        pet.welcomeMeToHome();

    }
}

对比原来的版本,去掉了所有的setter,整个类看上去非常清爽,@Resouce后的name=XXX,这里的XXX要跟Spring配置文件中,bean的id一致

 

未完待续...

属性文件的使用,明天有空再来补上

目录
相关文章
|
2月前
|
XML Java 开发者
Spring Boot中的bean注入方式和原理
Spring Boot中的bean注入方式和原理
83 0
|
4月前
|
Java 程序员 Spring
Spring5深入浅出篇:Spring对象属性注入详解
Spring5深入浅出篇:Spring对象属性注入详解
|
10天前
|
Java 数据安全/隐私保护 Sentinel
微服务学习 | Spring Cloud 中使用 Sentinel 实现服务限流
微服务学习 | Spring Cloud 中使用 Sentinel 实现服务限流
|
11天前
|
Java Spring 容器
Spring注入
Spring注入
27 13
|
11天前
|
Java Nacos 开发者
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
|
11天前
|
Dubbo Java 应用服务中间件
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
|
23天前
|
JSON Java 数据库连接
属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践
属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践
28 1
|
2月前
|
存储 JavaScript 前端开发
Spring Boot + Vue: 实现文件导入导出功能
本文介绍了使用Spring Boot和Vue实现文件导入导出的步骤。在后端,Spring Boot通过`MultipartFile`接收上传文件,保存至服务器,并使用`ResponseEntity`提供文件下载。前端部分,Vue项目借助`axios`发送HTTP请求,实现文件选择、上传及下载功能。这种前后端分离的实现方式提高了应用的可维护性和可扩展性。
43 2
|
2月前
|
XML Java 数据格式
解释Spring中一个bean的注入过程
解释Spring中一个bean的注入过程
|
3月前
|
Java Spring
Spring 使用注解注入失败,调用内容时提示空指针
Spring 使用注解注入失败,调用内容时提示空指针
15 0