Spring 基础
1.1 Bean实例化三种方式
- 无参构造方法实例化
- 工厂静态方法实例化
- 工厂实例方法实例化
<bean id="userDao" class="com.hqz.dao.impl.UserDaoImpl"/>
<bean id="userDao" class="com.hqz.factory.StaticFactory" factory-method="getUserDao"/>
<bean id="factory" class="com.hqz.factory.DynamicFactory"/>
<bean id="userDao" factory-bean="factory" factory-method="getUserDao"/>
public class DynamicFactory {
public UserDao getUserDao() {
return new UserDaoImpl();
}
}
public class StaticFactory {
public static UserDao getUserDao() {
return new UserDaoImpl();
}
}
1.2 Spring注入方式
1.2.1 构造方法注入
public class UserServiceImpl implements UserService {
private final UserDao userDao;
public UserServiceImpl(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void save() {
userDao.printTest();
}
}
<bean id="userDao" class="com.hqz.dao.impl.UserDaoImpl"/>
<bean id="userService" class="com.hqz.service.impl.UserServiceImpl">
<constructor-arg name="userDao" ref="userDao" />
</bean>
1.2.2 Set方法注入
public class UserServiceImpl implements UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void save() {
userDao.printTest();
}
}
<bean id="userDao" class="com.hqz.dao.impl.UserDaoImpl"/>
<bean id="userService" class="com.hqz.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
<bean id="userService" class="com.hqz.service.impl.UserServiceImpl">
<constructor-arg name="userDao" ref="userDao" />
</bean>
1.2.3 注入的数据类型
1.2.3.1 普通数据类型
public class UserDaoImpl implements UserDao {
private String userName;
private int age;
@Override
public void printTest() {
System.out.println(userName + "===" + age);
}
public void setUserName(String userName) {
this.userName = userName;
}
public void setAge(int age) {
this.age = age;
}
}
<bean id="userDao" class="com.hqz.dao.impl.UserDaoImpl">
<property name="userName" value="张三"/>
<property name="age" value="3"/>
</bean>
1.2.3.2 其他类型注入
<bean id="userDao" class="com.hqz.dao.impl.UserDaoImpl">
<property name="userName" value="张三"/>
<property name="age" value="3"/>
<property name="list">
<list>
<value>aa</value>
<value>bb</value>
<value>cc</value>
</list>
</property>
<property name="map1">
<map>
<entry key="u1" value-ref="user"/>
</map>
</property>
<property name="properties">
<props>
<prop key="p1">中华人民共和国333</prop>
</props>
</property>
</bean>
<bean id="user" class="com.hqz.domain.User">
<property name="name" value="小李子"/>
<property name="age" value="22"/>
</bean>