最近这两天一直在复习前面的内容,还是有很多东西都忘记了的。
以后会在这篇帖子里不定期补充、收集spring各个注解。
一切都是从零开始的,加油!
虽然是在做程序员,但是每天也是花1个小时的时间去阅读的,以后也会在csdn上分享的。
最近在读的一本书是朱光潜老先生的《给青年的十二封信》。后面也会分享读书心得的。
1.@Component(spring中的)
1.在spring中学的。
2.@Component:创建对象的,相当于bean标签的功能。
3.属性:value的值:就相当于bean中的id值(唯一)。
例:@Component(value="mystudent1")------在类的头上。
2.@Value(spring中的)
简单类型的数据的赋值
@Component(value="mystudent1")
public class Student {
@Value("18")
private int age;
@Value("任江海")
private String name;
}
3.@Autowired(spring中的)
某个类中,自动注入某个类。这是他默认的byType类型的注入。
4.@Autowired与@Qualifier联合使用(spring中的)
这是byName类型的注入。
@Qualifier的value值是用于指定要匹配的Bean的id值。
例子:先是在Student类的头上写了:@Component(value="mystudent1")
接着可以在某个类里面注入这个学生实体类:
@Autowired
@Qualifier("mystudent1") //这就特指了某个具体名称的实体类
private Student student;
5.@Resource(spring中的)
用法和@Autowired一样的,都是自动注入某个类。
6.@Respotory (用在持久层类上面)
放在dao的实现类上面,表示dao对象,dao对象是能够访问数据库的
(目前为止没 用过)
7.@Service (用在业务层类上面)
放在service实现类上面,创建service对象。做业务处理,有事务等功能(常用的)
8.@Controller
用于创建控制器对象,并放入到springmvc容器中去,作为控制器使用。
但是,他创建的是一个普通类的对象,不是servlet。
工作流程:index.jsp--->DispatherServlet(Servlet)--->转发,分配给Controller对象。
9.@RequestMapping(value=””,method=””)
把指定的请求交给方法处理。
例:@RequestMapping(value = "/say")
10.接收请求的几种方式
10.1保证请求参数名和处理方法的参数名相同即可。
例: 前端传来:name=李晓柔&age=20
public ModelAndView register(String name,int age){ //这样写即可
******
******
}
10.2 @RequestParam
主要是解决前端传来的参数与处理方法的参数名不同的问题。
例: 前端传来:rname=李晓柔&rage=20
public ModelAndView register(
@RequestParam(value=”rage” Integer age
@RequestParam(value=”rname” String name){
******
******
}
注:在这个注解中,有两个参数一个是value,一个是required
required默认情况下式true:代表请求中一定有参数
改成false时: 代表请求中可以没有参数。
10.3使用对象接收参数
例:先定义一个实体类Student,有两个属性值:name、age
前端传来:rname=李晓柔&rage=20
public ModelAndView register(Student student){
******
******
}
11.处理器的返回值(四种)
11.1 ModelAndView
跳转至其他的资源,又要在资源之间传递数据
11.2 String
返回内部资源逻辑名:要注册视图解析器。
11.3 void(了解即可)
处理器处理请求后,无需跳转到其他任何资源,可以让处理器方法返回void。
应用场景:ajax的异步请求的响应(是无需跳转至其他页面的)
11.4@ResponseBody 自定义返回类型(Object类型)
Integer、String、Map、List等。。。。。。
返回的对象不是作为逻辑视图出现,认识作为直接在页面上显示的数据。
======================分割线:2021.11.24 ====注解补充========================
12.异常处理的两个注解(SpringMVC中学的)
创建一个普通类,作为全局异常处理类
@ControllerAdvice写在类的头上
@ExceptionHandler写在类中方法的头上
-----------------------------------------------------------------------------
在处理器中抛出的异常,会在全局异常处理类中,通过
@ExceptionHandler(value = NameException.class)的value值找到,然后进行异常的反馈。
(详情请见:springmvc中的ch09项目。视频P61讲的也是很仔细。)
13. @Mapper
写在dao接口的头上:扫描DAO接口到spring容器。
14. @MapperScan
案例:在Application.java文件里写这样的注解:
@MapperScan("com.bjpowernode.springboot.mapper")
直接开启扫描Mapper接口的包以及子目录。
注意:一开始的做法是:讲dao接口和其对应的mapper文件在spring容器中进行声明(最麻烦)
之后进行@Mapper的改进。
再轴之后进行@MapperScan的改进。
15. @Transactional
写在service实现类的方法上面,保证事务执行的顺畅性。
16. @GetMapping
查询数据 的时候使用 经常使用到
@RequestMapping(value=”/say”,method=RequestMethod.GET)的替代品是======
@GetMapping(value=”/say”)
17. @PostMapping
增加数据的 时候使用
@RequestMapping(value=”/say”,method=RequestMethod.POST)的替代品是======
@PostMapping(value=”/say”)
18. @DeleteMapping
作为 @RequestMapping(value = "/say",method = RequestMethod.DELETE)的替代品
删除数据的 时候使用
例子:@DeleteMapping(value="/say") 处理器只能接受delete请求 删除数据使用
注:不仅仅只是有get和post两种请求方式啊,还有很多种请求方式的。
19. @PutMapping
改数据的 时候使用
作为 @RequestMapping(value = "/say",method = RequestMethod.PUT)的替代品
例子:@PutMapping(value="/say") 处理器只能接受put请求 改数据使用
总结来讲:suid时,各有各对应的请求方式,用准请求方式很重要,例如:Controller只接受删除时,发送的是get请求,那就会报405错误。所以我们可以使用postman这个工具,来指定发送什么请求(浏览器只能发送get请求。)
20. @PathVariable
接受路径形式的请求参数。
@GetMapping(value = "/student/detail/{id}/{age}") //作为RESTful风格,请求路
径是写成路劲形式的。
例: public Object student1(@PathVariable("id") Integer id,
@PathVariable("age") Integer age) {
************
************
}
======================分割线:2021.11.30 ====注解补充========================
21. @SpringBootApplication
写在springboot的启动文件application里。 开启springboot注解。
22. @EnableDubboConfiguration
写在springboot的启动文件application里。 开启dubbo配置。
23. @Reference
@Reference是dubbo的注解,也是注入,他一般注入的是分布式的远程服务的对象,
需要dubbo配置使用。
-------------------------------------------------------------------------------------------------------------
简单来说@Reference、@Resource和@Autowired的区别:
@Reference注入的是分布式中的远程服务对象,@Resource和@Autowired注入的是本地spring容器中的对象。
24. @Configuration
写在某类的头上,定义此类为配置文件。
25.springboot中的关于servlet的注解
1.@WebServlet(urlPatterns = "/myservlet")在某类的头上写,注明这是一个servlet。
2.在Application主文件中写:表示扫描所有的Servlet包。
@ServletComponentScan(basePackages = "com.bjpowernode.springboot.servlet")
26.springboot中过滤器的注解
其实和上面的Servlet是差不多一样的。
1.在自己写一个过滤器MyFilter类,头上标注:@WebFilter(urlPatterns = "/myfilter") 说明这是一个过滤器。
a. MyFilter类需要继承Filter类 public class MyFilter implements Filter
b. /myfilter:是过滤器的访问路径。
2.在springboot的启动文件中扫描过滤器@ServletComponentScan
@ServletComponentScan(basePackages = "com.bjpowernode.springboot.filter")
======================分割线:2021.12.5 ====注解补充========================
27.@ResponseBody与@RestController
见springboot中的017案例
@ResponseBody的作用其实是将java对象转为json格式的数据。
那么@RestController是干嘛用的呢?
@Controller +@RequestMapping+ @ResponseBody 返回json对象
@RestController+@RequestMapping 也是返回json对象(这俩是一样的效果)
当实际开发中,控制器返回的都是json格式的数据,就直接使用:@RestController
28.@Bean
用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理