医药网站备案成都定制app开发公司
一、介绍
Spring 框架是一个资源整合的框架,可以整合一切可以整合的资源(Spring 自身和第三方),是一个庞大的生态,包含很多子框架:Spring Framework、Spring Boot、Spring Data、Spring Cloud…… 其中Spring Framework是核心。
 
SSM框架
- Spring Framework框架
 - Spring MVC框架
 - Mybatis框架
 
1.Spring Framework
包含三个子框架:IoC(控制反转),AoP(面向切面编程),Spring MVC子框架
 java对象和Spring Bean 对象是一样的,只是创建的人不一样
1.1 IoC
1)IoC是控制反转的思想,反转资源的获取方向
 将对象的创建和管理交给框架完成,将程序员解放出来
2)实现:通过IoC容器和DI依赖注入,其中IoC容器的实现是由ApplicationContext接口实现,这个接口可以是AnnocationConfigApplicationContext 和 ClasspathXmlApplicationContext来实现
 IoC容器的创建:
 通过注解的方式和xml文件配置的方式进行实现
3)常用注解:(自动创建Bean对象)
 类上:
 ①@Component
 表示未分层
 ②@Controller
 表示在控制层,负责接受请求和返回响应
 ③@Service
 表示在业务层,负责业务逻辑处理
 ④@Repository
 表示在数据访问层,负责数据库的交互
1.2DI依赖注入注解
① @Value(“注入值”)
 属性,set方法上
 ②@Autowired
 属性、set方法、构造方法上
 对象类型或接口类型依赖注入
 ③@Qualifier(value=“对象名”)
 根据Bean对象的名称进行注入,一个接口多个实现类时使用
面试题:
 @Autowired注解和@Resource的区别
-  
前者是Spring Framework的注解,后者则是JDK的标准注解
 -  
@Autowired注解只能根据类型装配,一个接口多个实现类时需要结合Qualifier进行装配
 -  
@Resource注解如果制定了name参数,参数和Bean对象名一致,则根据name对应的Bean对象名进行装配;不一致则根据类型装配
 -  
@Resource未指定name参数,则把属性名作为Bean对象名称进行装配
 
2.Bean对象生命周期
2.1生命周期
1)实例化,通过构造方法实现
 2)属性赋值,set方法实现
 3)初始化,@PostConstruct注解执行初始化的方法
 4)使用 context.getBean(类名.class)
 5) 销毁,@PreDestroy注解执行销毁之前的方法
2.2 引入外部属性文件
1)创建配置文件,放在resources目录下,.yml、.properties、.yaml结尾
 2)通过@PropertySource(“配置文件路径”)引入
 3)$(配置名称)获取具体配置
2.3 自动扫描
工程中配置文件层config的配置文件SpringConfig
/**Configuration注解:表示当前类为配置类,Spring自动加载ComponentScan注解:自动扫描注解,该包以及子孙包中的所有的类,为其创建Bean对象MappingScan注解,自动扫描,为该包里的所有接口自动加上@Mapping注解并实例化**/
@Configuration
@ComponentScan("扫描指定包的路径")
@MappingScan("扫描指定包的路径")
public class SpringConfig{
}
 
3.Mybatis框架
是一个开源的数据持久层框架,java对象与关系型数据库之间进行映射的方式,可以用xml配置文件或注解方式进行sql映射
3.1ORM
对象关系映射,用于将对象模型与关系型数据库之间进行映射
| Java | 数据库 | 
|---|---|
| 一个类 | 一张表 | 
| 一个类属性 | 一个表字段 | 
| 一个对象 | 一条表记录 | 
Java中的属性数量和类型一定要对应数据库中的字段和类型,名字可以不一致
3.2流程
- 创建工程,勾选mybatis、mysql,lombok依赖

 

- 配置数据库连接信息application.properties
 
spring.datasource.url=jdbc:mysql://localhost:3306/库名?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
spring.datasource.username=root
spring.datasource.password=root
 
- 创建实体类pojo.entity.类名
 
//对应数据表中的属性
@Data  //包含了构造方法、重写toString、get、set方法
public class Weibo {private Long id;private String content;private Date created;private Long userId;
}
 
- 创建接口和接口方法 mapper.xxxMapper
 
@Mapper
public interface XxxMapper {int insertUser(User user);
}
 
- 创建mapper映射文件 xxxMapper.xml
 
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="">
<insert id="对应的mapper方法名">
(增)sql语句
</insert>
<select id=".." resulttype="结果返回的实体类目录(可以是entity、vo、dto)">
查询sql语句
</select>
......
</mapper>
 
- 测试
 
@SpringBootTest
public class WeiboTests {//自动装配@Autowiredprivate XxxMapper xxxMapper;//下面写测试方法://(示例)void insertWeiboTest(){Weibo weibo = new Weibo();weibo.setContent("明天不加班了,哎");weibo.setCreated(new Date());weibo.setUserId(100L);System.out.println(weiboMapper.insertWeibo(weibo));}
 
运行测试方法查看数据表中是否修改了
