博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring 配置依赖
阅读量:4165 次
发布时间:2019-05-26

本文共 4494 字,大约阅读时间需要 14 分钟。

一、spring注入方式及配置

spring根据注入方式不同可以分为两种形式:

属性:通过<property>元素设值注入;

构造器参数:通过<constructor-arg>构造注入。

由于java 实例的属性值可以是各种数据类型,除了基本类型,还可以是其它java实例,也可以是java集合、数组等,所以spring允许通过如下两种元数为bean实例的属性指定值:

value

ref

bean

list set map props

下面详细介绍这4种情况:

package test.demo;public class ExampleBean {    private String name;    private int    age;    public ExampleBean() {    }    public ExampleBean(String name, int age) {        this.name = name;        this.age = age;    }    /**     * 获取name     * @return name     */    public String getName() {        return name;    }    /**     * 设置name     * @param name name     */    public void setName(String name) {        this.name = name;    }    /**     * 获取age     * @return age     */    public int getAge() {        return age;    }    /**     * 设置age     * @param age age     */    public void setAge(int age) {        this.age = age;    }}

1、设置普通属性值

设值注入:

	

 
 

构造注入:

2、注入合作者bean

如果需要配置合作者Bean的话,则应该使用<ref>元素。

3、注入集合值

package test.demo;import java.util.List;import java.util.Map;import java.util.Properties;import java.util.Set;public class Chinese {    private List
schools; private Map scores; private Map
phaseAxes; private Properties health; private Set axes; private String[] books; /** * 获取schools * @return schools */ public List
getSchools() { return schools; } /** * 设置schools * @param schools schools */ public void setSchools(List
schools) { this.schools = schools; } /** * 获取scores * @return scores */ public Map getScores() { return scores; } /** * 设置scores * @param scores scores */ public void setScores(Map scores) { this.scores = scores; } /** * 获取phaseAxes * @return phaseAxes */ public Map
getPhaseAxes() { return phaseAxes; } /** * 设置phaseAxes * @param phaseAxes phaseAxes */ public void setPhaseAxes(Map
phaseAxes) { this.phaseAxes = phaseAxes; } /** * 获取health * @return health */ public Properties getHealth() { return health; } /** * 设置health * @param health health */ public void setHealth(Properties health) { this.health = health; } /** * 获取axes * @return axes */ public Set getAxes() { return axes; } /** * 设置axes * @param axes axes */ public void setAxes(Set axes) { this.axes = axes; } /** * 获取books * @return books */ public String[] getBooks() { return books; } /** * 设置books * @param books books */ public void setBooks(String[] books) { this.books = books; }public void test(){ System.out.println(schools); System.out.println(scores); System.out.println(phaseAxes); System.out.println(health); System.out.println(axes); System.out.println(java.util.Arrays.toString(books)); }}
package test.demo;public interface Axe {    void chop();}
package test.demo;public class SteelAxe implements Axe {    @Override    public void chop() {        System.out.println("钢斧砍柴真快!");    }}
package test.demo;public class StoneAxe implements Axe {    @Override    public void chop() {        System.out.println("石斧砍柴真慢!");    }}
小学
中学
大学
正常
172
字符串
疯狂java讲义
大型网站技术架构
java算法
输出结果:

[小学, 中学, 大学]{语文=99, 数学=100, 英语=44}{石头的=test.demo.StoneAxe@1e12f6d, 钢铁的=test.demo.SteelAxe@f0b4a3}{血压=正常, 身高=172}[字符串, test.demo.SteelAxe@1f6f27b][疯狂java讲义, 大型网站技术架构, java算法]

二、使用自动装配注入合作者bean

spring的自动装配可以通过<beans>元素的default-autowire属性指定,也可以通过<bean>元素的autowire属性指定。autowire属性可以接受如下值:

no:不使用自动装配。bean依赖必须通过ref元素定义。

byName:根据属性名自动装配。BeanFactory查找容器中的全部bean,找出其中id属性与属性同名的bean来完成注入。如果没有找到匹配的bean实例,则spring不会进行任何注入。

byType:根据属性类型自动装配。BeanFactory查找容器中的全部bean,如果正好有一个与依赖属性类型相同的bean,就注入这个属性;如果有多个这样的bean则抛出一个异常;如果没有匹配的bean,则属性不会被注入。

constructor:与byType类似,区别是用于构造注入的参数。如果BeanFactory中不是恰好有一个Bean与构造器参数类型相同,则会抛出一个异常。

autodetect:BeanFactory根据Bean内部结构,决定使用constructor或byType。如果找到一个默认的构造函数,那么就会应用byType.

转载地址:http://zqlxi.baihongyu.com/

你可能感兴趣的文章
多个.C和.H文件的相互调用以及变量的跨文件使用
查看>>
转:Linux 各种BCD时间与Unix时间戳格式转换
查看>>
串口阻塞和非阻塞
查看>>
共用体位域的高低位
查看>>
linux的添加网关 查看网关等信息
查看>>
浅谈C++类中的公有和私有
查看>>
std::string用法总结
查看>>
c++中函数声明的后面加=0
查看>>
static修饰的函数只能在本文件中调用,其他文件想调用怎么办?
查看>>
如何在linux中运行中定义lib的路径在makefile里面
查看>>
修改一个文件夹下面所有文件和文件夹的属性--chmod -R 777 app_zt/
查看>>
动态库编写 头文件.h注意事项
查看>>
指针易犯错的地方--self标记
查看>>
多个动态库的依赖问题(先后顺序务必注意)
查看>>
linux怎么复制文件和复制文件夹
查看>>
kafka重复消费问题--consumer消费能力很低
查看>>
springboot集成kafka
查看>>
SpringBoot整合MyBatis
查看>>
C++编程第一步:输出九九乘法表
查看>>
C++编程第一步:输出水仙花数
查看>>