Spring 和 Spring MVC学习
一、Spring 事务
1.1 事务简介
- 事务作用︰在数据层保障一系列的数据库操作同成功同失败
- Spring事务作用︰在数据层或
业务层保障一系列的数据库操作同成功同失败
案例:银行账户转账
- 在业务层接口添加
Spring事务管理
public interface AccountService {
/**
* 转账操作
* @param out 传出方
* @param in 传入方
* @param money 金额
*/
@Transactional
public void transfer(String out, String in, Double money);
}
- 在
Jdbc配置文件中设置事务管理器
@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource){
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
transactionManager.setDataSource(dataSource);
return transactionManager;
}
- 在Spring配置文件中开启事务
@Configuration
@ComponentScan("com.lyq")
@Import({MybatisConfig.class, JdbcConfig.class})
@PropertySource("jdbc.properties")
@EnableTransactionManagement
public class SpringConfig {
}
1.2 Spring 事务角色
- 事务管理员:发起事务方,在Spring中通常指代业务层开启事务的方法
- 事务协调员∶加入事务方,在Spring中通常指代数据层方法,也可以是业务层方法
案例:转账业务追加日志
1.2.1 事务传播行为
二、SpringMVC
2.1 SpringMVC 简介
- SpringMVC是一种表现层框架技术
- SpringMVC用于进行表现层功能开发
2.2 SpringMVC 入门案例
- 首先创建 Maven 的 webapp 功能
- 创建 java 文件夹,设置为源目录
- 创建 controller 文件夹编写文件
// 2. 定义 Controller
// 2.1 使用 Controller 定义 bean
@Controller
public class UserController {
// 2.2 设置当前操作访问路径
@RequestMapping("/save")
// 2.3 设置当前操作的返回值类型
@ResponseBody
public String save(){
System.out.println("user save....");
return "{'module': 'springmvc'}";
}
}
- 引入依赖和
tomcat插件
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>80</port>
<path>/</path>
</configuration>
</plugin>
- 编写
SpringConfig配置类
// 3. 创建 springmvc 配置文件,加载 controller 对应的 bean
@Configuration
@ComponentScan("com.lyq.controller")
public class SpringMvcConfig {
}
- 告诉SpringMVC,
编写Servlet配置类,继承AbstractDispatcherServletInitializer
// 4. 定义一个 Servlet 容器启动的配置类,在里面加载 spring 配置
public class ServletContainersInit extends AbstractDispatcherServletInitializer {
// 加载 springMVC 容器配置
@Override
protected WebApplicationContext createServletApplicationContext() {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(SpringMvcConfig.class);
return ctx;
}
// 设置那些请求归属 springMVC 处理
@Override
protected String[] getServletMappings() {
// 所有请求
return new String[]{"/"};
}
// 加载 spring 容器配置
@Override
protected WebApplicationContext createRootApplicationContext() {
return null;
}
}
- 添加
tomcat
2.3 Spring 和 SpringMVC 加载
- 简化开发
2.4 get 和 post请求
2.4.1 中文乱码过滤器
// 乱码处理
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter filter = new CharacterEncodingFilter();
filter.setEncoding("utf-8");
return new Filter[]{filter};
}