Spring-SSM整合基础步骤

学习了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:写在方法上,设置该方法为销毁方法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值