Sprind基础学习1——基础概念和bean对象
IOC
控制反转:将对象的创建权限交给Spring处理。
为了更好地解耦,我们采用工厂+反射+配置文件
的方式实现程序的解耦:
在工厂类中,解析xml,通过反射生成对象。
DI
依赖注入:spring在管理这个类的时候,将这个类的依赖属性注入进来。
// applicationn中配置对象
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd">
<bean id="accountDao" class="com.hhh.spring.demo.AccountDaoImpl">
</bean>
</beans>
// 在java中使用
@Test
public void demo1(){
ApplicationContext mApplicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
AccountDao mAccountDao = (AccountDao) mApplicationContext.getBean("accountDao");
mAccountDao.inMoney();
}
Bean的相关配置
Bean生命周期配置
init-method: bean被初始化时调用
destroy-method: bean被销毁(bean单里创建、工厂销毁)
// 在application.xml中配置生命周期init-method 和 destroy-method
<bean id="serviceDao" class="com.hhh.spring.demo.AccountServiceImpl"
init-method="setup"
destroy-method="destroy"></bean>
// 在bean的类中创建
public class AccountServiceImpl implements AccountService {
public void setup(){
System.out.println("init");
}
public void destroy(){
System.out.println("destroy");
}
.
.
.
}
bean作用范围配置
scope: Bean的作用范围
-
singleton:采用单例的模式创建对象(默认的)
-
prototype:多例模式
-
request:应用在web项目中,spring创建对象之后,将其放入到request范围内
-
session:应用在web项目中,spring创建对象之后,将其放入到session范围内
-
globalsession:应用在web项目中,必须在porlet环境中使用