Spring
针对web的开发组件。
核心容器(控制反转IOC),整合,AOP
对象的创建控制权有程序转交给外部提交,这种思想称为反转控制
ioc容器负责对象的创建初始化,被创建或者被管理的对象在ioc中成为BeanDI
注入依赖
- 注入数据的三种数据类型 普通数据类型 引用数据类型 集合数据类型
在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入。
在pom.xml中引入spring框架:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
set依赖注入:修改xml中的数据
<bean id="bookdao" class="com.zx.dao.impl.BookDaoImpl"/>
<!--<bean id="bookservice" class="com.zx.service.impl.BookServiceImpl">-->
<!-- <property name="ibookdao" ref="bookdao"></property>-->
<!-- </bean>-->
在service中书写set方法
public class BookServiceImpl implements IBookService {
private IBookDao ibookdao;
public void setIbookdao(IBookDao ibookdao) {
this.ibookdao = ibookdao;
}
public void save() {
ibookdao.save();
System.out.println("book service........");
}
}
实现类:
public class App {
public static void main(String[] args) {
// System.out.println("hello maven!");
ApplicationContext ctx = new ClassPathXmlApplicationContext("ApplicationContext.xml");
IBookService bookservice = (IBookService)ctx.getBean("bookservice");
bookservice.save();
}
}
p命名空间注入(类似于set注入)
首先,需要引入P命名空间:
xmlns:p="http://www.springframework.org/schema/p"
<bean id="bookservice" class="com.zx.service.impl.BookServiceImpl" p:ibookdao-ref="bookdao"/>
构造方法注入
创建有参构造
public class UserServiceImpl implements UserService {
private UserDao userDao;
public UserServiceImpl() {
}
public UserServiceImpl(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void save() {
userDao.save();
}
}
ApplicationContext中修改
<bean id="bookservice" class="com.zx.service.impl.BookServiceImpl">
<constructor-arg name="ibookdao" ref="bookdao"></constructor-arg>
</bean>
修改service实现类中代码:
public class BookServiceImpl implements IBookService {
private IBookDao ibookdao;
public BookServiceImpl() {
}
public BookServiceImpl(IBookDao ibookdao) {
this.ibookdao = ibookdao;
}
/*
private IBookDao ibookdao;
public void setIbookdao(IBookDao ibookdao) {
this.ibookdao = ibookdao;
}
这个为set构造或者p命名空间构造
*/
public void save() {
ibookdao.save();
System.out.println("book service........");
}
}