1、Spring概述
1、什么是Spring?
Spring是分层的Java SE/EE full-stack轻量级开源框架
2、Spring有什么用?
简化应用程序的开发
3、特点:
- LoC(Inverse of Control 控制反转)
- AOP(Aspect Oriented Programming 面向切面的编程)
4、Spring的体系结构
2、Spring核心容器
Spring容器会负责控制程序之间的关系,而不是由程序代码直接控制。Spring为我们提供了两种核心容器,分别为BeanFactory和ApplicationContext
1、创建BeanFactory实例时,需要提供Spring所管理容器的详细配置信息,这些信息通常采用XML文件形式来管理,加载配置语法:
BeanFactory beanFactory=new XmlBeanFactory(new FileSystemResource("F:/applicationContext.xml"))
"……"为配置文件的位置
2、ApplicationContext是BeanFactory的子接口,是另一种常用的Spring核心容器。
(1)通过ClassPathXmlApplicationContext创建
ApplicationContext applicationContext= new ClassPathXmlApplicationContext(String configLocation);
ClassPathXmlApplicationContext会从类路径classPath中寻找指定的XML配置文件,找到并装载完成ApplicationContext的实例化工作。
(2)通过FileSystemXmlApplicationContext创建
ApplicationContext applicationContext = new FileSystemXmlApplicationContext(String configLocation);
FileSystemXmlApplicationContext会从指定的文件系统路径(绝对路径)中寻找指定的XML配置文件,找到并装载完成ApplicationContext的实例化工作。
3、获取Spring容器管理的方法:
- Object getBean(String name);
根据容器中Bean的id或name来获取指定的Bean,获取之后需要进行强制类型转换。 - T getBean(Class requiredType);
根据类的类型来获取Bean的实例。由于此方法为泛型方法,因此在获取Bean之后不需要进行强制类型转换。
3、Spring入门程序
UserService获得UserDao的实例
-
在src/main/java 下项目路径下创建IUserDao.java,IUserService.java接口,然后在每个接口各定义一个public void say() 方法
-
创建上述接口的实现类UserDaoImpl.java,User ServiceImpl.java
package cn.edu.ujn.ch1;
public class UserServiceImpl implements IUserService {
private IUserDao userDao;
//使用setter方法实现依赖注入
public void setUserDao(IUserDao userDao) {
this.userDao = userDao;
}
@Override
public void say() {
// TODO Auto-generated method stub
System.out.println("userservice say hello world!");
userDao.say();
}
}
- 创建Spring的配置文件applicationContext.xml,并在配置文件中创建一个id为userDao的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="userDao" class="cn.edu.ujn.ch1.UserDaoImpl"></bean>
<bean id="userService" class="cn.edu.ujn.ch1.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean>
</beans>
注:
- < property>两个参数表示把哪一个实例注入给哪一个成员变量,name为成员变量(Userservice类中声明的成员变量);ref为实例,即上面 < bean id=“userDao” ……>中的id。
- 每一个< bean></ bean>就是Spring管理的一个实例。
- 创建测试类,并在类中编写main()方法。在main()方法中,需要初始化Spring容器,并加载配置文件,然后通过Spring容器获取userDao实例(即Java对象),最后调用实例中的say()方法。
package cn.edu.ujn.ch1;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestSpring {
public static void main(String[] args) {
ClassPathXmlApplicationContext ctx =
new ClassPathXmlApplicationContext("applicationContext.xml");
IUserDao userdao = (IUserDao) ctx.getBean("userDao");
userdao.say();
System.out.println("-------------------------------");
IUserService userservice = (IUserService)ctx.getBean("userService");
userservice.say();
}
}
4、依赖注入
使用setter方法实现依赖注入。
5、其他
- 常用快捷方式
alt+/ 提示
CPXAC 创建一个Spring的上下文
ctrl+1赋值