三、Spring的核心思想
1.控制反转(IOC)
(1)概念
控制反转是Spring框架的核心思想之一,主要用于解耦。IOC是指将创建对象的控制权转移给Spring框架进行管理。由Spring框架根据配置文件或注解等方式,创建bean对象并管理各个bean对象之间的依赖关系。使对象之间形成松散耦合的关系,实现解耦。
(2)控制反转的实现方式
XML方式
语法
<bean id=”对象名” class=”类的全名”></bean>
创建方式
方式一:直接创建对象
<bean id="userService" class="com.service.UserService"></bean>
方式二:工厂模式创建对象(了解)
先创建一个类,写一个普通方法,用来创建对象
public class MyFactory(){
public UserService getUserService(){
return new UserService();
}
}
然后,通过这个工厂创建对象
<bean id="myFactory" class="com.factory.MyFactory"></bean>
<bean id="userService" factory-bean="myFactory" factory-method="getUserService"></bean>
方式三:静态工厂创建对象(了解)
先创建一个类,写一个静态方法,用来创建对象
public class MyFactory(){
public static UserService getUserService(){
return new UserService();
}
}
然后,通过这个静态工厂创建对象
<bean id="userService" factory-bean="com.factory.MyFactory" factory-method="getUserService"></bean>
bean标签常用的属性
id: 对象名称
name:需要创建对象的全类名
factory-bean:工厂名称
factory-method:工厂方法
lazy-init:懒加载(true开启懒加载/fales关闭懒加载)
init-method:初始化方法
destroy-method:销毁方法
scope:创建对象范围(singleton单例(默认)/prototype多例)
注解方式
@Component
public class UserService{
}
(3)依赖注入的方式
XML方式
手动注入
set注入
<bean id="userService" class="com.service.UserService">
<property name="userDao" ref="userDao"></property>
<property name="age" value="10"></property>
</bean>
<bean id="userDao" class="com.dao.userDao"></bean>
构造注入
<bean id="userService" class="com.service.UserService">
<constructor-arg name="userDao" ref="userDao"></constructor-arg>
<constructor-arg name="age" value="10"></constructor-arg>
</bean>
<bean id="userDao" class="com.dao.userDao"></bean>
自动注入
set注入
byName注入
<bean id="userService" class="com.service.userService" autowire="byName"></bean>
byType注入
<bean id="userService" class="com.service.userService" autowire="byType"></bean>
构造注入
<bean id="userService" class="com.service.userService" autowire="constructor"></bean>
注解方式
@Component
public class UserService{
private UserDao userDao;
@Autowired
public void setUserDao (UserDao userDao) {
this.userDao= userDao;
}
}