配置容器
xml配置容器
就是spring 的 xml文件中那样的写法
1
<bean id = "createStudent" class="com.xxx.Student"></bean>
javaConfig配置容器
采用java类的方式来配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14// 表示当前类是作为配置文件使用
public class SpringConfig {
/*
创建方法,方法的返回值是对象。在方法上加上@Bean
方法的返回值对象就注入到容器中。方法名是默认的Bean id
*/
public Student createStudent() {
Student stu = new Student();
stu.setName("张三");
return stu;
}
}把XML文件住的的Bean导入到容器
1
2
3
4
5
public class SpringConfig {
}引入外部属性配置文件
1
2
3
4
5
public class SpringConfig {
}扫描组件注解
1 |
|
spring boot
它是spring中的一个成员,可以简化Spring MVC的使用,他的核心还是IOC容器。
特点:
- 内嵌 tomcat,jetty,Undertow
- 提供起步依赖,简化配置
- 自动配置spring和第三方库
- 健康检查,统计,外部化配置
- 不同生成代码,不用使用xml做配置
创建springboot项目
通过 IDEA 方式
浏览器访问 start.springboot.io
创建一个普通maven项目然后在pom文件中加入parent
spring注解
@SpringBootApplication
此注解由 3 个注解组成
@SpringBootConfiguration 注解标注类 可作为配置文件使用,注册Bean
- @Configuration
@EnableAutoConfiguration 启用自动配置
@ComponentScan 组件扫描器,从主文件位置扫描
spring boot 的配置文件
配置文件名: application
拓展名:(properties(k:v), yml(k: v))
两种格式同时存在系统默认读取 application.properties
application.yml
1 | server: |
配置文件多环境配置
application-dev.yml 开发环境
application-prod.yml 生产环境
application.properties/application.yml
1 | # 激活使用按个配置文件 |
配置文件数据映射为Java对象
自定义属性
1 | sftp: |
Java对象中
1 |
|
spring 中获取容器
1 | ConfigurableApplicationContext app = SpringApplication.run(SpringbootTestApplication.class, args); |
CommandLineRunner
开发中可能会有这样的情景。需要在容器启动后执行一些内容。比如读取配置文件,数据库连接之类的。SpringBoot 给我们提供了两个接口来帮助我们实现这种需求。这两个接口分别为 CommandLineRunner 和 ApplicationRunner。他们的执行时机为容器启动完成的时候这两个接口中有一个 run 方法,我们只需要实现这个方法即可。这两个接口的不同之处而在于:ApplicationRunner 中 run 方法的参数为 ApplicationArguments,CommandLineRunner
接口中run 方法的参数为 String 数组
1 |
|
此组件会在主方法之前调用
web组件
拦截器
能拦截 Control 的接口请求
创建 MyInterceptor
1 |
|
注册拦截器
1 |
|
springboot 中使用 servlet
新建servlet
1 | public class TestService extends HttpServlet { |
注册servlet
1 |
|
过滤器
创建 MyFilter
1 | public class MyFilter implements Filter { |
注册 Filter
1 |
|
添加字符集过滤
1 |
|
启用字符集过滤器
1 | servlet: |
其实我没可以使用spring boot默认的字符集配置,只需要改变默认字符集
1 | servlet: |
集成mybatis
依赖:创建项目时选择 springWeb, MybaatisFragment, Mysql-Driver
1 | <dependency> |
配置数据库
1 | spring: |
创建 model,control,service, mapper
@Mapper 注解
放在 mapper 接口上。每个mapper 都要加。它会自动生成 实现类
@MapperScan
配置扫描,可以给指定目录下文件添加 @Mapper注解。通常配置在项目主类上
1 |
指定 xml 文件所在文件目录位置
1 | mybatis: |
指定日志输出格式
1 |
|
springboot事务管理
在入口类使用注解 @EnableTransactionManagement 开启事务支持
在业务方法中 加入 @transactional 表示事务支持。
接口架构风格
API:可以指访问servlet,controller的url,调用其他程序的函数
RESTful 风格
Representational State Trasfer 【表现层状态转移】
它是一种架构风格和设计的理念,不是标准
优点:更简洁,更又层次
使用url表示资源,使用http动作操作资源
相关注解:
@PathVariable: 从url中获取数据
@GetMapper: 支持get请求
@PostMapping:支持post请求方式’
@PutMapper: 支持put请求
@DeleteMapping:支持delete请求
@RestController: 符合注解,是@Controller和@ResponseBody组合
表示当前类的所有方法都加入 @ResponseBody
1 | /** |
注解总结
Spring + SpringMVC + SpringBoot
创建对象的:
@Contro1ler: 放在类的上面,创建控制器对象,注入到容器中
@RestContro11er: 放在类的上面,创建控制器对象,注入到容器中。
作用: 复合注解是
@Contro1ler ,@ResponseBody,使用这个注解类的,里面的控制器方法的返回值都是数据
@Service :放在业务层的实现类上面,创建service对象,注入到容器
@Repository : 放在dao层的实现类上面,创建dao对象,放入到容器。 没有使用这个注解,是因为现在使用MyBatis梅架,dao对象是MyBatis通过代理生成的。 不需要使用
@Component: 所以没有使用。放在类的上面,创建此类的对象,放入到容器中。
赋值的:
@Value: 简单类型的赋值, 例如 在属性的上面使用@Value(“李四”) private string name@vaTue :还可以使用@Value,获取配置文件者的数据(properties或ym])。@Value(“sfserver .port}”) private Integer port
@Autowired: 引用类型赋值自动注入的,支持byName,byType.默认是byType 。放在属性的上面,也可以放在构造方法的上面。 推荐是放在构造方法的上面给引用类型赋值,使用byName方式。
@Qualifer: @Qualifer都是Spring框架提供的。
@Resource :来自idk中的定义, javax.annotation。 实现引用类型的自动注入, 支持byName,byType.黑认是byWame,如果byName失败, 再使用byType注入。 在属性上面使用
其他
@Configuration :放在类的上面,表示这是个配置类,相当于xml配置文件
@Bean: 放在方法的上面, 把方法的返回值对象,注入到spring容器中。
@ImportResource :加载其他的xm配置文件, 把文件中的对象注入到spring容器中
@PropertySource :读取其他的properties属性配置文件
@ComponentScan :扫描器,指定包名,扫描注解的
@ResponseBody: 放在方法的上面,表示方法的返回值是数据,不是视图
@RequestBody : 把请求体中的数据,读取出来, 转为iava对象使用。
@ControlTerAdvice:控制器增强, 放在类的上面, 表示此类提供了方法,可以对controller增强功能。
@ExceptionHandler : 处理异常的,放在方法的上面
SpringBoot中使用的注解
@SpringBootConfiguration: 放在启动类上面, 包含了@SpringBootApplication :@EnabTeAutoConfiguration, @ComponentScan
MyBatis相关的注解
@Mapper : 放在类的上面 , 让MyBatis找到接口,创建他的代理对象(MapperScan :放在主类的上面 , 指定扫描的包, 把这个包中的所有接口都创建代理对象。 对象注入到容器中
@Param :放在dao接口的方法的形参前面,作为命名参数使用的。
Dubbo注解
@Dubboservice: 在提供者端使用的,暴露服务的, 放在接口的实现类上面@DubboReference: 在消费者端使用的, 引用远程服务, 放在属性上面使用。@EnableDubbo : 放在主类上面, 表示当前引用启用Dubbo功能。
- 本文作者: 王不留行
- 本文链接: https://wyf195075595.github.io/2023/03/02/programming/java/springboot/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!