学习了SSM整合,感觉是一个非常实用的框架,自己也打算学学大佬把自己的所学所得记录在这里.
一:SSM 整合介绍:
SSM 是 SpringMVC + Spring +MyBatis,这是一个标准的MVC设计模式,它将整个系统划分为web、service层、dao层。Spring MVC、Spring、Mybatis各司其职,在整个项目中有着不同的作用。
二:为什么要整合SSM
1.一般实际开发中很少使用单个框架
2.充分发挥每个框架的优势
3.提高开发效率,减少开发代码,降低开发成本
SSM的整合步骤
1.创建数据库和表
2.创建Maven Web模块
3.创建三层架构的包
4.SSM整合(重点)
4.1.Spring整合MyBatis
4.1.1.编写Spring配置类,在配置类中需要扫描service的包,读取外部配置文件,加载MyBatis相关配置,开启事务注解驱动
@Configuration //编写在类上,标识该类为一个配置类
@ComponentScan("service") //设置spring配置类扫描路径,用于加载使用注解格式定义的bean
@Import({Jdbc配置类,MyBatis配置类}) //在当前类中引入其他的配置类
@EnableTransactionManagement //开始事务
public class SpringConfig {
}
4.1.2.创建MyBatis配置类(重要),配置SqlSessionFactoryBean和MapperScannerConfigurer
public class MyBatisConfig {
@Bean //编写在方法上,会将方法的返回值制作成Spring容器中的一个bean对象
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setTypeAliasesPackage("com.itheima.pojo");
return sqlSessionFactoryBean;
}
@Bean //编写在方法上,会将方法的返回值制作成Spring容器中的一个bean对象
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setBasePackage("com.itheima.dao");
return mapperScannerConfigurer;
}
}
4.1.3.创建Jdbc配置类,配置DataSource与DataSourceTransactionManager
@PropertySource("classpath:jdbc.properties") //加载properties文件中的属性值
public class JdbcConfig {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Bean
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
@Bean //开启事务
public PlatformTransactionManager transactionManager(DataSource dataSource) {
DataSourceTransactionManager manager = new DataSourceTransactionManager();
manager.setDataSource(dataSource);
return manager;
}
}
4.2.Spring整合SpringMVC
4.2.1.编写SpringMvc配置类,在配置类中扫描controller的包,开启SpringMVC的注解支持
@Configuration //编写在类上,标识该类为一个配置类
@ComponentScan({"扫controller包","扫config包"}) //设置spring配置类扫描路径
@EnableWebMvc //开启SpringMVC注解
public class SpringMvcConfig {
}
4.2.1.编写一个ServletConfigInitializer的配置类,该配置类需要继承AbstractAnnotationConfigDispatcherServletInitializer,并实现符类中的三个方法,分布用来加载Spring配置类、SpringMVC配置类、配置SpringMVC拦截请求路径
public class ServletConfigInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{SpringConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{SpringMvcConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
@Override //解决乱码问题
protected Filter[] getServletFilters() {
CharacterEncodingFilter filter = new CharacterEncodingFilter("UTF-8");
return new Filter[]{filter};
}
}
5.Spring整合Junit的实现步骤
1.引入对应的依赖
2.创建测试类
3.类上添加注解
@RunWith(SpringJUnit4ClassRunner.class),用来设置Junit运行器
@ContextConfiguration,用来加载Spring的核心配置
class:加载核心配置类
locations:加载核心配置文件
4.在测试类中注入需要测试的对象,然后调用方法进行测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class MyBatisBookTest {
}
附上:Spring中IOC与DI的常见注解
1.@ComponentScan:设置spring配置类扫描路径,用于加载使用注解格式定义的bean
2.@Component: 设置该类为spring管理的bean
3.由@Component衍生出其他三个注解,@Controller,@Service,@Repository
4.@Configuration:编写在类上,标识该类为一个配置类
5.@Bean:编写在方法上,会将方法的返回值制作成Spring容器中的一个bean对象
6.@Autowired:为引用类型属性设置值
7.@Qualifier:为引用类型属性指定注入的beanId
8.@Value:为基本数据类型或或字符串类型属性设置值
9.@PropertySource:加载properties文件中的属性值
10.@Import:在当前类中引入其他的配置类
11.@Scope:该注解用来指定bean的作用范围
12.@PostConstructor:写在方法上,设置该方法为初始化方法
13.@PreDestroy:写在方法上,设置该方法为销毁方法