浅谈Spring Bean的基本配置

网友投稿 752 2023-01-22

浅谈Spring Bean的基本配置

浅谈Spring Bean的基本配置

一、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所没有的,需要我们自己去定http://义,就比如Date类型,如果我们这样写就会报错

private Date birthday;

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

二、Spring_scop

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

BeanFactory beanFactory = new ClassPathXmlApplicationContext("beanFactory.xml");

//http://从工厂中拿配置好的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.jpg

2.jpg

3.jpg

六、List注入

private List list;

a

<value>b

<value>c

七、Set注入

private Set set;

a

b

c

八、Map注入

private Map map

//第一种写法

//第二种写法

b

九、Property注入

private Properties prop;

42341231

5464564

2659846

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:社区app运营模式(社区app运营模式有哪些)
下一篇:IDEA连接mysql数据库报错的解决方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~