您现在的位置是:首页 >技术杂谈 >spring网站首页技术杂谈
spring
简介spring
1、IOC容器(spring提供)
控制反转(对象创建权的转换)
由主动new产生对象,转换为由外部提供对象(被创建或管理的对象统称为Bean)
导入spring坐标
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.23</version>
</dependency>
定义spring管理的类(接口)
spring配置文件,applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--1、导入spring坐标spring-context,对应版本5.3.23-->
<!--2、配置bean-->
<!--id表示给bean起名字 class表示给bean定义类型 -->
<bean id="bookDao" class="com.wrx.dao.impl.BookDaoImpl"/>
<bean id="bookService" class="com.wrx.service.impl.BookServiceImpl"/>
</beans>
2、DI依赖注入
建立Bean和Bean之间的依赖关系
java-app
//3、获取IOc容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//4、获取bean
BookDao bookDao = (BookDao) ctx.getBean("bookDao");
public class BookServiceImpl implements BookService {
//5、删除业务层中使用new的方式创建的dao对象
private BookDao bookDao;
public void save(){
System.out.println("book service save...");
bookDao.save();
}
//6、提供对应的set方法
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
}
applicationContext.xml
<bean id="bookService" class="com.wrx.service.impl.BookServiceImpl">
<!--7、配置server与dao的关系-->
<!--property标签表示配置与当前bean的属性,name属性表示配置哪一个具体的属性,ref属性表示参照哪一个bean-->
<property name="bookDao" ref="bookDao"/>
</bean>
##IoC管理service和Dao,通过配置将被管理的对象——>ioc
##通过接口获取ioc容器,接口方法获取Bean
##通过pom文件导入坐标
3、bean
name控制一个bean有多个名称
spring默认bean单例(创建的对象反复使用)(使用无参构造器)
(封装实体的域对象、不适合交给容器管理)
作用范围:一个bean的创建是否是单例
实例化:
<!--方法1:构造方法实例化bean-->
<bean id="bookDao" class="com.wrx.dao.impl.BookDaoImpl"/>
<!--方法2:静态工厂实例化bean-->
<bean id="orderDao" class="com.wrx.factory.OrderDaoFactory" factory-method="getOrderDao"/>
<!--方法3:使用实例工厂实例化bean-->
<bean id="userFactory" class="com.wrx.factory.UserDaoFactory"/>
<bean id="userDao" factory-method="getUserDao" factory-bean="userFactory"/>
<!--方法4:使用FactoryBean实例化bean-->
<bean id="userDao" class="com.wrx.factory.UserDaoFactoryBean"/>
静态工厂
public class OrderDaoFactory {
public static OrderDao getOrderDao(){
return new OrderDaoImpl();
}
}
方法四:
public class UserDaoFactoryBean implements FactoryBean<UserDao> {
//代替原始实例化工厂中创建对象的方法
@Override
public UserDao getObject() throws Exception {
return new UserDaoImpl();
}
@Override
public Class<?> getObjectType() {
return UserDao.class;
}
}
bean生命周期
<!--方法1:配置 -->
<bean id="bookDao" class="com.wrx.dao.impl.BookDaoImpl" init-method="init" destroy-method="destory"/>
<!--方法2:接口-->
InitializingBean
DisposableBean
关闭容器
ConfigurableApplicationContext
close()
registerShutdownHook()
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。