Spring 4.0.2 学习笔记(2) - 自动注入及properties文件的使用-阿里云开发者社区

开发者社区> 杨俊明> 正文

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一致

 

未完待续...

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spring Boot四:配置文件详解properties
一.配置随机数,使用随机数 在application.properties文件添加配置信息 #32位随机数 woniu.secret=${random.value} #随机整数 woniu.number=${random.
1763 0
SpringBoot-13-插曲之Node文件重命名+自动生成json对象
遇到的问题:图片太多,使用起来挺麻烦 [1]有很多图片放服务器里,怎么能更好的管理,更方便拿到图片呢? [2]想用json 以一个对象数组的形式保存这些图片:以[{img:"图片名"},{img:"图片名"}....]形式 [3]虽说想法是很好,但不可能一条一条自己写吧,好歹咱也是21世纪敲代码的人。
831 0
Spring Security笔记:HTTP Basic 认证
在第一节 Spring Security笔记:Hello World 的基础上,只要把Spring-Security.xml里改一个位置 1 2 3 4 注意第三行,加上后,再次访问/admin,会弹出下面的对话框: 有...
1321 0
如何获取.properties配置文件
如何获取.properties配置文件 分析思路: 先使用流和文件关联,即读取文件 再读取文件内容,一行一行读取 字符分割“=”  键值对 然后把键值对放到集合中去     但是Properties类里面有方法给我们用,底层就是按照上面的思路获取的 Properties props = new P...
515 0
Spring Security笔记:使用BCrypt算法加密存储登录密码
在前一节使用数据库进行用户认证(form login using database)里,我们学习了如何把“登录帐号、密码”存储在db中,但是密码都是明文存储的,显然不太讲究。这一节将学习如何使用spring security3新加入的bcrypt算法,将登录加密存储到db中,并正常通过验证。
1626 0
Spring Security笔记:登录尝试次数限制
今天在前面一节的基础之上,再增加一点新内容,默认情况下Spring Security不会对登录错误的尝试次数做限制,也就是说允许暴力尝试,这显然不够安全,下面的内容将带着大家一起学习如何限制登录尝试次数。
1325 0
SSH 文件上传错误:encountered 1 errors during the transfer终极解决方法:
以下方法简单排序,从简单到复杂: 法一:在SSH Secure File Transfer(上传文件那个),打开“Operation”菜单,打开“File Transfer Mode”子菜单,再选择“Binary”,OK! 法二:把服务器上同名文件删掉再传 法三:如果文件在桌面上,将要上传的文件复制到其它分区,再上传! 法四:到 http://winscp.
831 0
再读《Parallel Programming with Python》并作笔记
并发编程,在哪个语言里都属于高端应用,一定得会了才好意思说懂了这门语言。 在工作中用得并不是很多,忘了一些内容,就慢慢看,慢慢补上。 今天一天看了近三分之一(我看外文越来越快了??:)), 实践一下多线程的threading模块。
1114 0
+关注
杨俊明
菩提树下的杨过 http://yjmyzz.cnblogs.com/
1105
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载