浅谈Spring Bean的基本配置

这篇文章主要介绍了浅谈Spring Bean的基本配置,文中有非常详细的代码示例,对正在学习java Spring的小伙伴们有非常好的帮助,需要的朋友可以参考下

目录

一、Spring中set方法的注入

1.1 set的两种注入方法

1.2 type属性

1.3 Date()类型的注入

二、Spring_scop

三、自动注入(autowire)

四、构造注入

五、Array注入(数组注入)

六、List注入

七、Set注入

八、Map注入

九、Property注入

一、Spring中set方法的注入

User实体

@Data //lombok提供的有参构造 @AllArgsConstructor lombok提供的无参构造 @NoArgsConstructor public class User { private int id; private String name; private int age; private String sex; private String birthday; }

beanfactory.xml

张三

1.1 set的两种注入方法

我们在xml文件中注入的时候我们可以写成这样:

也可以写成这样:

1806

这没什么区别的,不过我们一般使用前者,毕竟看起来代码少,也方便

代码测试:

@Test public void test3(){ //创建工厂 beanfactory beanfactory = new ClasspathXmlApplicationContext("beanfactory.xml"); //从工厂中拿配置好的UserServlet实例 User user = beanfactory.getBean(User.class); System.out.println(user); }

1.2 type属性

有事我们在注入的时候有时候会看到type:

1806

这相当于一个类型声明,声明value是什么类型的数据,然后调用类型转换器将我们写入的字符串转换为我们我们所定义的类型。但其实这是一个多余的,当我们注入的时候,会通过User对象进行反射从而知道是什么类型。

1.3 Date()类型的注入

但有一些特殊的类型是Spring所没有的,需要我们自己去定义,就比如Date类型,如果我们这样写就会报错

private Date birthday;

Spring是没有这个的转换器,将字符串转换为Date类型,所以其实我们可以直接用String来写,或者new Date(),但是后者约束性太大,不能得到我们想要的日期,还是前者方便。

二、Spring_scop

当我们在测试案例中创建两个User实例时,进行检查发现,这两个实例其实是一个

beanfactory beanfactory = new ClasspathXmlApplicationContext("beanfactory.xml"); //从工厂中拿配置好的UserServlet实例 User user = beanfactory.getBean(User.class); User user1 = beanfactory.getBean(User.class); System.out.println(user == user1);

如果我们要创建多例模式,就要使用到属性scope

scope属性有两个值:

1.singleton(认情况下,即单例模式)

2.prototype(多例模式)

我们在进行测试答案为false

三、自动注入(autowire)

我们在userServlet中注入userDao

但其实我们没必要这样写,Bean中you自动注入的属性autowire,他有两个值:

1.byName,根据名字注入,即id=“userDao”

2.byType,根据类型注入,类型注入比较有局限性,同种类型只能注入一个,多了会报不是唯一错误

四、构造注入

构造注入和set注入的不同点就是,加入元素的顺序必须和你所创建的实体(User)类相同,若不同,则会报错,由于反射过来的类型和转换器转换的类型不同,这时候我们需要加入另一个属性index

那什么时候使用构造注入呢?当我们自己定义一个构造函数的时候使用构造注入

public class User { private int id; private String name; private int age; private String sex; private String birthday; //自定义构造函数 public User(int id , String name){ this.id = id; this.name = name; } }

这个时候就不能使用set注入,他会报错,即使你写出全参构造函数也不行

五、Array注入(数组注入)

private String[] photos;

1.jpg2.jpg3.jpg

六、List注入

private List list;

abc

七、Set注入

private Set set;

abc

八、Map注入

private Map map

//第一种写法 //第二种写法 b

九、Property注入

private Properties prop;

4234123154645642659846

到此这篇关于浅谈Spring Bean的基本配置的文章就介绍到这了,更多相关Spring Bean的配置内容搜索编程之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程之家!

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...