SpringSpring概述 Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核。 提供了展现层 SpringMVC和持久层 Spring JDBCTemplate以及业务层事务管理等众多的企业级应用技术 Spring的优势方便解耦,简化开发 AOP 编程的支持 声明式事务的支持 方便程序的测试 spring快速入门①导入 Spring 开发的基本包坐标 <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> </dependencies> ②编写 Dao 接口和实现类 ③创建 Spring 核心配置文件,applicationContext.xml ④在 Spring 配置文件中配置 UserDaoImpl <beanid="userDao" class="com.itheima.dao.impl.UserDaoImpl"/> id:Bean实例在Spring容器中的唯一标识 class:Bean的全限定名称 scope:指对象的作用范围,singleton默认值,单例的 ⑤在servlet使用 Spring 的 API 获得Bean 实例 Bean实例化三种方式1) 使用无参构造方法实例化 它会根据默认无参构造方法来创建类对象,如果bean中没有默认无参构造函数,将会创建失败
<bean id="userDao"class="com.itheima.dao.impl.UserDaoImpl"/>
2) 工厂静态方法实例化 工厂的静态方法返回Bean实例
public class StaticFactoryBean {
public static UserDaocreateUserDao(){
return new UserDaoImpl();
}
}
<beanid="userDao" class="com.itheima.factory.StaticFactoryBean"
factory-method="createUserDao" /> 3) 工厂实例方法实例化 工厂的非静态方法返回Bean实例
public class DynamicFactoryBean {
public UserDao createUserDao(){
return new UserDaoImpl();
}
}
<beanid="factoryBean"class="com.itheima.factory.DynamicFactoryBean"/>
<bean id="userDao" factory-bean="factoryBean"factory-method="createUserDao"/> Bean的依赖注入set方法 在UserServiceImpl中添加setUserDao方法
public class UserServiceImpl implements UserService {
private UserDao userDao;
public voidsetUserDao(UserDao userDao) {
this.userDao= userDao;
}
@Override
public void save() {
userDao.save();
}
} 配置Spring容器调用set方法进行注入 <bean id="userDao"class="com.itheima.dao.impl.UserDaoImpl"/>
<bean id="userService"class="com.itheima.service.impl.UserServiceImpl">
<property name="userDao"ref="userDao"/>
</bean> Bean的依赖注入的数据类型普通数据类型 引用数据类型 集合数据类型 引入其他配置文件(分模块开发)将部分配置拆解到其他配置文件中,而在Spring主配置文件通过import标签进行加载 <importresource="applicationContext-xxx.xml"/> getBean()方法使用ApplicationContextapplicationContext = newClassPathXmlApplicationContext("applicationContext.xml"); UserService userService1 = (UserService)applicationContext.getBean("userService"); UserService userService2 =applicationContext.getBean(UserService.class);
|