大家好,又见面了,我是你们的朋友全栈君。
spring的属性注入是bean管理中的一个非常重要的内容,它可以通过有参数的构造函数注入属性,也可以通过set方法注入属性。包括基本类型的属性注入、对象类型的属性注入和复杂类型的属性注入。
一.基本类型
有参数构造
代码实现:
public class User{
private String username;
public User(String username) {
this.username = username;
}
public void test1(){
System.out.println("User....."+username);
}
}
spring配置文件实现:
<!-- 使用有参数的构造注入属性 -->
<bean id="user" class="cn.itcast.property.User">
<!-- 使用有参的构造注入 -->
<constructor-arg name="username" value="张三"></constructor-arg>
</bean>
有参数的构造函数注入属性的时候用的是<constructor-arg/>标签。
set方法设置
代码实现:
public class Book {
private String bookname;
//set方法
public void setBookname(String bookname) {
this.bookname = bookname;
}
public void demobook(){
System.out.println("book......."+bookname);
}
}
spring配置文件实现:
<!-- 使用set方法注入属性 -->
<bean id="book" class="cn.itcast.property.Book">
<!-- 注入属性值
name属性值:类里面定义的属性名称
value属性:设置具体的值 -->
<property name="bookname" value="Spring实战"></property>
</bean>
使用set方法注入属性时用的是<property/>标签。
二.对象类型
我们在项目实战中,service一般都需要调用dao,这时候就需要把dao对象注入到service中。首先我们创建UserService和UserDao两个类,并在UserService类中定义UserDao类型的属性。
public class UserService {
//1.定义dao类型属性
private UserDao userDao;
//生成set方法
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void add(){
System.out.println("service.........");
//在service里面得到dao类对象,才能调用dao里面的方法
userDao.add();
}
}
public class UserDao {
public void add(){
System.out.println("dao.........");
}
}
在配置文件中创建userService和userDao对象,并将userDao注入到userService中。
<!-- 注入对象类型属性 -->
<!-- 配置service和dao对象 -->
<bean id="userDao" class="cn.itcast.ioc.UserDao"></bean>
<bean id="userService" class="cn.itcast.ioc.UserService">
<!-- 注入dao对象
name属性值:service类里面属性名称
字符串用value,对象用ref
ref属性:dao配置bean标签中id值 -->
<property name="userDao" ref="userDao"></property>
</bean>
三.复杂类型
除了上面两种类型可以注入之外,还有复杂类型属性的注入,比如数组、list、map、properties等。
public class Person {
private String[] arrs;
private List<String> list;
private Map<String,String> map;
private Properties properties;
public void setArrs(String[] arrs) {
this.arrs = arrs;
}
public void setList(List<String> list) {
this.list = list;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
public void test(){
System.out.println("arrs:"+arrs);
System.out.println("list:"+list);
System.out.println("map:"+map);
System.out.println("properties:"+properties);
}
}
<!-- 注入复杂类型属性值 -->
<bean id="person" class="cn.itcast.ioc.Person">
<!-- 数组 -->
<property name="arrs">
<list>
<value>张三</value>
<value>李四</value>
<value>王五</value>
</list>
</property>
<!-- list -->
<property name="list">
<list>
<value>Tom</value>
<value>Bob</value>
<value>Mary</value>
</list>
</property>
<!-- map -->
<property name="map">
<map>
<entry key="aa" value="小明"></entry>
<entry key="bb" value="小红"></entry>
<entry key="cc" value="小美"></entry>
</map>
</property>
<!-- properties -->
<property name="properties">
<props>
<prop key="driverclass">com.mysql.jdbc.Driver</prop>
<prop key="username">root</prop>
</props>
</property>
</bean>
今天介绍的都是通过配置文件来实现bean管理,而我们平时经常用的是通过注解来管理bean,所以接下来将为大家介绍注解方式的bean管理。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105636.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...