1.spring的特性是什么?ioc和Aop的原理是什么?aop的注解有哪些?
1.IOC
(控制反转),将创建对象和依赖注入的方式反转了,将对象的创建以及管理交由spring容器。
2.DI
依赖注入,Spring容器来维护对象之间的依赖关系,
Di为IOC提供了支持,没有DI就完不成IOC.
3.AOP
面向切面编程,将横切关注点与业务逻辑相分离的一种编程思想。
横切关注点:散布于应用中多处的功能点且这个功能点与应用的业务逻辑是相分离的
ioc和aop的原理是什么?
ioc:控制反转也叫依赖注入。
利用了工厂模式将对象交给容器管理,
在spring配置文件中配置对应的bean以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。
spring会将你在配置文件中配置的bean都初始化好,然后在你需要调用的时候,就把它已经初始化好的那些bean分配给你需要调用bean的类(假设这个类名是A),调用A的setter方法来注入
Aop:
是对oop的补充和完善,
OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。
实现AOP的技术,主要分为两大类:
一是采用动态代理技术,
利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;
二是采用静态织入的方式,
引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码
aop实现的原理其实是
java动态代理,但是jdk动态代理必须实现接口,
所以spring的Aop是用cglib这个库实现的,cglib使用了asm这个直接操纵字节码的框架,所以可以做到不实现接口的情况下完成动态代理。
aop的注解有哪些?
@Aspect:
作用:切面类
@Before
作用:前置通知
@After
作用:后置通知
@AfterThrowing
作用:异常通知。
@Around
作用:环绕通知。
@Pointcut
作用:切入点表达式
2.springboot自动装配原理是什么?
1.springboot在启动的时候从类路径下的META-inf/spring.factories中获取EnableAutoConfiguraction指定的值
2.将这些值作为自动配置类导入容器,自动配置类就会生效,帮我们进行自动配置工作
进入@SpringBootApplication后,里面还有许多配置。
springboot配置文件中常用配置有哪些?
1.修改端口和默认路径
server:
port: 8889
servlet:
context-path: /chapter02
springboot配置文件常用配置整理
yml文件的一些配置:
2.#连接数据库
spring:
datasource:
url: jdbc:mysql://localhost:3306/eesy?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
#开启springboot应用时需要执行sql文件需要配置这个东西
initialization-mode: always
schema:
- classpath:xxx.sql
3.#Druid数据源的一些配置
#更换数据源(Druid)
type: com.alibaba.druid.pool.DruidDataSource
#数据源的一些参数配置
druid:
# 连接池配置
# 配置初始化大小、最小、最大
initial-size: 1
min-idle: 1
max-active: 20
# 配置获取连接等待超时的时间
max-wait: 3000
validation-query: SELECT 1 FROM DUAL
test-on-borrow: false
test-on-return: false
test-while-idle: true
pool-prepared-statements: true
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
filters: stat,wall,slf4j
# 配置web监控,默认配置也和下面相同(除用户名密码,enabled默认false外),其他可以不配
web-stat-filter:
enabled: true
url-pattern: /*
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
stat-view-servlet:
enabled: true
url-pattern: /druid/*
login-username: admin
login-password: root
allow: 127.0.0.1
4.#MyBatis的一些配置
mybatis:
config-location: classpath:mybatis/mybatis-config.xml #mybatis全局配置文件
mapper-locations: classpath:mybatis/mapper/*.xml #xml包所在位置
type-aliase