Java-Spring狂神笔记
一、注解
注意:
- 使用注解需要导入aop的依赖,xml中加context约束和注解依赖
- 要加扫描
1、自动装配
- @Autowired:自动装配,默认by Type
- 可以使用@Qualiffier(value=“xxx”)
- @Resource:java自带的,默认by name ,名字冲突亦可以使用by Type
- @Value(“xxx”) :设置属性 值
2、Component衍生注解
- @Component:将类放入 spring 容器中
- MVC三层架构:dao、services、controller
- dao层: @Repository
- services层:@@ervice
- controller层:@Controller
(上面的三个注解都是@component的衍生,与Component)
作用域:
@Scope(“prototype”)(一般都是试用单例模式)
- 原型模式为每次 get 都新 new 一个对象
- 单例模式每个类只有一个实例
3、Java 代码实现配置,不适用XML文件
- @Configration // 用在类上面,表示这个类是一个配置类
- @ComponentScan // 与之前xml文件中的扫描一样的
- @Import(xxx.class)// 与xmlImport类似
二、动态代理
- 动态代理分两大类:
– 基于接口的 —— JDK 动态代理
– 基于类的 —— cglib
–java字节码实现:javasist - 两个类
- InvocationHandler:由代理实力的调用处理程序实现的接口;
- Proxy :提供创建动态代理类的静态方法类
三、AOP
- AOP在Spring中的作用:提供声明式事物,允许用户自定义切面
- 实现
- 实现一:使用Spring自带的API
- 实现二:自定义类
- 方式三:使用注解实现
- xml配置,开启注解支持:<aop:aspectj-autoproxy />
- @Aspect,标注这个类是一个切面
- @Befor“execution()”):标志在函数上,表示方法调用前执行(与After一样选用aspectj包中的,因为有两个重名的)
- @After():
- @Around():
四、Spring整合Mybatis
-
mybatis-spring包:
-
mybatis开发流程:
- 1、编写实体类
- 2、编写核心配置文件
- 3、编写接口
- 4、编写Mapper.xml
- 5、测试
-
SqlSessionTemplate是Mybatis-Spring的核心,是SqlSession的一个实现,线程安全。
五、Spring MVC
1、流程
- 实线是自动执行的,虚线需要用户实现
2、注解实现
-
@Controller:组件注册
-
@RestController // 不走视图解析器,直接返回json字符串
-
@ResponseBody // 不走试图解析器,直接返回一个字符串
-
@RequestMapping(“/hello”)
- 在类上写回事方法上的上级目录
- 在方法上上写就是直接路径
- return的是跳转的js文件
- 直接写就是转发(返回写的页面)
- return “redirect:/index.jsp” 这样是重定向
- Model,ModelAndView,ModelMap,可以返回
3、RestFul风格
-
在url中的斜线分割参数
-
注解风格的不同请求类型
- @GetMapping
- @PostMapping
-
RestFul:简洁,高效(缓存),安全
-
lombok中的注解
- @NoArgsConstructor: 自动生成无参数构造函数。
- @AllArgsConstructor: 自动生成全参数构造函数。
- @Data: 自动为所有字段添加@ToString,@EqualsAndHashCode, @Getter方法,为非final字段添加@Setter,和@RequiredArgsConstructor!
4、乱码问题
过滤器解决,SpringMVC自动的,在xml中配置就好了
5、json——Jackson,fastjson
- 设置MVC乱码解决
- 设置不走解析器
6、拦截器
- 与过滤器区别:
- 拦截器是SpringMVC自己特有的
- 拦截器只会拦截访问的控制方法,js,jsp,html,css等的访问不会拦截
六、Ajax
- 不用加载整个网页——异步加载
- jQuery: Ajax的一个库