-
Spring是一个开源免费的框架
-
Spring时一个轻量级的、非入侵式的框架
-
控制反转,面向切面编程
-
支持事务的处理,对框架的整合的支持
1、新建Maven项目
导包,这一个加载一堆包,非常好用
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
</dependencies>
2、实现控制反转
userDao(接口),userDaoImpl,UserService(接口),UserServiceImpl
只包含getUser()方法
import com.xian.Dao.UserDao; import com.xian.Dao.UserDaoImpl; public class UserServiceImpl implements UserService { private UserDao userDao; public void setUserDao(UserDao userDao){ this.userDao=userDao; } @Override public void getUser() { userDao.getUser(); } }
public class MyTest {
public static void main(String[] args) {
UserService userService=new UserServiceImpl();
((UserServiceImpl)userService).setUserDao(new UserDaoImpl());
((UserServiceImpl)userService).setUserDao(new MysqlDaoimpl());
userService.getUser();
}
}
把控制权交给用户,用户需要那个调用哪个
3、Spring实现控制反转
1、创建Bean
<?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"> <bean id="hello" class="com.xian.pojo.Hello"> <property name="str" value="Hello,Spring"/> </bean> </beans>
2、创建普通Java类
package com.xian.pojo; public class Hello { private String str; public String getStr() { return str; } public void setStr(String str) { this.str = str; } @Override public String toString() { return "Hello{" + "str='" + str + '\'' + '}'; } }
3、Test
public class MyTest { public static void main(String[] args) { ApplicationContext context1 = new ClassPathXmlApplicationContext("beans.xml"); Hello hello = (Hello) context1.getBean("hello"); System.out.println(hello.toString()); } }
注意:被创建Bean的pojo对象,会发生一些细微的变化
- 程序不再new对象,由Spring创建
- 程序不再赋值,由Spring进行赋值
4、Spring实现控制反转
1.Bean的创建
<bean id="Mysql" class="com.xian.Dao.MysqlDaoimpl"></bean> <bean id="User" class="com.xian.Dao.UserDaoImpl"></bean> <bean id="UserServer" class="com.xian.Service.UserServiceImpl"> <property name="userDao" ref="Mysql"></property> </bean> </beans>
2.Test
public class MyTest { public static void main(String[] args) { ApplicationContext context1 = new ClassPathXmlApplicationContext("beans.xml"); UserServiceImpl userServer = (UserServiceImpl) context1.getBean("UserServer"); userServer.getUser(); } }
-
ref:引用Spring容器创建好的对象(beans文件里有的)
-
Value:具体的值,基本数据类型
5、IOC到底是个啥
对象由Spring创建,管理和装配
6、IOC创建对象
- 默认使用空构造
- 类里如果包含有参构造,空构造会失效,对应的参数必须赋值
创建方式
1.按下标
<bean id="hello" class="com.xian.pojo.Hello">
<constructor-arg index="0" value="Spring,Hello"></constructor-arg>
</bean>
2.按参数名
<bean id="hello" class="com.xian.pojo.Hello">
<constructor-arg name="str" value="Heello,Spring"/>
</bean>