A
@Autowired
可以自动帮把bean里面引用的对象的setter/getter方法省略,它会自动帮你set/get。
注释进行自动注入时,spring容器中匹配的候选Bean数目必须有且仅有一个。
否则将抛出BeanCreationException异常
默认先按byType进行匹配,如果发现找到多个bean,
则又按照byName方式进行匹配,如果还有多个,则报出异常。
B
@Bean
用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。
产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中。
SpringIOC 容器管理一个或者多个bean,这些bean都需要在@Configuration注解下进行创建,
C
@Controller
是Spring框架提供的注解。@Controller标识的类,该类代表控制器类(控制层/表现层)。
控制层里面的每个方法,都可以去调用@Service标识的类
@Service标识的类中的方法可以继续调用@Resposity标识的接口实现类(Dao层/持久层)。
@configuration
用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,
使用这两个注解就可以创建一个简单的spring配置类,可以用来替代相应的xml配置文件。
这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,
并用于构建bean定义,初始化Spring容器。
@ControllerAdvice
这是一个增强的 Controller,可以实现:
1. 全局异常处理
在@ControllerAdvice类中,可以定义多个方法,不同的方法处理不同的异常
2. 全局数据绑定
全局数据绑定功能可以用来做一些初始化的数据操作,可以将一些公共的数据定义在添加了 @ControllerAdvice 注解的类中,
这样,在每一个 Controller 的接口中,就都能够访问到这些数据。
3. 全局数据预处理
@Column
JPA中声明属性与数据库字段的映射关系。
@ComponentScan
标注哪些注解标识的类 会被spring自动扫描并且装入bean容器。
basePackages标识需要扫描的包
excludeFilters 属性表示排除规则,
可以写多个 @Filter 来排除, 上面的代码表示 排除 Controller 注解的类
D
E
@ExceptionHandler
使用@ExceptionHandler注解时,需要定义一个异常的处理方法
给这个方法加上@ExceptionHandler注解,
这个方法就会处理类中其他方法(被@RequestMapping注解)抛出的异常。
注解中可以添加参数,参数是某个异常类的class,代表这个方法专门处理该类异常
@Entity
JPA中对实体注释。
@EnableAutoConfiguration
根据添加的jar依赖猜测如何配置Spring,形成自动配置
F
G
@GeneratedValue
为一个实体生成一个唯一标识的主键
@GeneratedValue注解有两个属性,分别是strategy和generator,
strategy属性:提供四种值:
-AUTO
主键由程序控制, 是默认选项 ,不设置就是这个
-IDENTITY
主键由数据库生成, 采用数据库自增长, Oracle不支持这种方式
-SEQUENCE
通过数据库的序列产生主键, MYSQL 不支持
-Table
提供特定的数据库产生主键, 该方式更有利于数据库的移植
H
I
@Id
JPA中声明此属性为主键。该属性值可以通过应该自身创建
J
K
L
M
@ModelAttribute
1. 应用在方法上
被@ModelAttribute注解的方法会在Controller每个方法执行之前都执行
2. 应用在参数上
使用@ModelAttribute注解的参数,意思是从前面的Model中提取对应名称的属性。
N
O
@Override
伪代码,表示重写
编译器可以给验证@Override下面的方法名是否是父类中所有的,如果没有则报错。
P
@PathVariable
通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:
URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中;
@PathVariable 是从一个URI模板里面取值来填充
@PathParam
这个注解是和spring的pathVariable是一样的,
可以将 URL 中占位符参数绑定到控制器处理方法的入参中,也是基于模板的,
但是这个是jboss包下面的一个实现,上面的是spring的一个实现,都要导包
@Profile
1. 在任何直接或间接使用@Component和@Configuration的类上作为一个类型注解使用
2. 作为元注解,用于组成自定义构造型注解
3. 作为任何@Bean方法的方法级注解
Q
R
@RequestParam
把请求中的指定名称的参数传递给控制器中的形参赋值
@RequestParam 是从request里面拿取值
属性:
1. value / name:请求参数中的名称 (必写参数)
2. required:请求参数中是否必须提供此参数,默认值是true,true为必须提供
3. defaultValue:默认值
@ResponseBody
注解 @ResponseBody,使用在控制层(controller)的方法上
将方法的返回值,以特定的格式写入到response的body区域,进而将数据返回给客户端。
当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。
如果返回值是字符串,那么直接将字符串写到客户端;
如果是一个对象,会将对象转化为json串,然后写到客户端。
@RestController
Spring框架提供的注解。@RestController 注解相当于 @Controller + @ResponseBody 合在一起的作用。
Controller类中的方法返回值,默认是json对象,也就是相当于@Controller里面的方法上添加了@ResponseBody
如果方法返回值,需要跳转,那么方法的返回类型必须是View 或者ModelAndView.
@RequestMapping
将请求URL映射到整个类上或某个特定的方法上
一个requestMapping可以映射单个或多个URL
路径开头是否加斜杠/均可,建议加上
Ant 风格的 URL 映射:
通配符 ? 匹配任何单字符
通配符 * 匹配任意数量的字符(含 0 个)
通配符 ** 匹配任意数量的目录(含 0 个)
占位符URL 映射:
URL 中可以通过一个或多个 {} 占位符映射
例如:@RequestMapping("/user/{userId}/show")
可以通过@PathVariable("") 注解将占位符中的值绑定到方法参数上
@ResponseStatus
1. 标注在@RequestMapping方法上.
改变服务器响应的状态码
2. 标注在@ControllerAdvice中.
3. 自定义类型的异常添加注解@ResponseStatus
@Repository
用在持久层的接口上,这个注解是将接口的一个实现类交给spring管理。
@Resource
@Resource默认按byName自动注入。
既不指定name属性,也不指定type属性,则自动按byName方式进行查找。
如果没有找到符合的bean,则回退为一个原始类型进行进行查找,如果找到就注入。
只是指定了@Resource注解的name,则按name后的名字去bean元素里查找有与之相等的name属性的bean。
只指定@Resource注解的type属性,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常。
S
@SpringBootApplication
@SpringBootApplication =
(默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan。
@ServletComponentScan
SpringBootApplication 上使用@ServletComponentScan 注解后
Servlet可以直接通过@WebServlet注解自动注册
Filter可以直接通过@WebFilter注解自动注册
Listener可以直接通过@WebListener 注解自动注册
@Service
服务层组件,用于标注业务层组件,表示定义一个bean,
自动根据bean的类名实例化一个首写字母为小写的bean,
@SessionAttributes
在多个请求之间共用数据,则可以在控制器类上标注一个 @SessionAttributes,
配置需要在session中存放的数据范围,
将存放在model中对应的数据暂存到HttpSession 中。
注意:
1. 只能使用在类定义上。
2. 可以通过属性名指定需要放到会话中的属性外
3. 可以通过模型属性的对象类型指定哪些模型属性需要放到会话中
T
@Test
该方法可以不用main方法调用就可以测试出运行结果,是一种测试方法
一般函数都需要有main方法调用才能执行,注意被测试的方法必须是public修饰的
还可以指定将会抛出的异常类型,如果没有抛出异常或者抛出的一场不属于指定的类型,就会算是测试失败了。
U
V
@Value
该注解作用的作用是将我们配置文件的属性读出来,有@Value("${}")和@Value("#{}")两种方式
@Value("${}"):
在使用Springboot项目搭建的项目时,
配置文件application.properties中已经被加载到了项目中,
在项目中可以通过该注解获取配置文件中的信息
@Value("#{}"):
SpEL表达式
通常用来获取bean的属性,或者调用bean的某个方法。
当然还有可以表示常量
W
@WebFilter
用于将一个类声明为过滤器,该注解将会在部署时被容器处理,
容器将根据具体的属性配置将相应的类部署为过滤器。
所有属性中 value、urlPatterns、servletNames 三者必需至少包含一个,
其他为可选属性,且 value 和 urlPatterns 不能共存,
如果同时指定,通常忽略 value 的取值
@WebListener
对于使用注解的监听器就是在监听器类上使用@WebListener进行标注
这样Web容器就会把它当做一个监听器进行注册和使用了
监听器类应该实现下面接口之一:
对Request的监听:
ServletRequestListener:
可见监听Request的创建和销毁
ServletRequestAttributeListener:
可以对Request的属性进行监听。
对Session的监听:
HttpSessionListener:
可以监听HttpSession的创建跟销毁
HttpSessionAttributeListener:
对session中属性的监听
对ServletContext的监听:
ServletContextListener:
可以监听到ServletContext的创建和销毁
ServletContextAttributeListener:
可以监听到ServletContext中属性变化
@WebServlet
用于标注在一个继承了HttpServlet类之上,属于类级别的注解
该注解的作用等价于 在web.xml中配置的该servlet的元素中的配置
属性:
loadOnStartup属性:
标记容器是否在启动应用时就加载Servlet,
默认不配置或数值为负数时表示客户端第一次请求Servlet时再加载;
0或正数表示启动应用就加载,正数情况下,数值越小,加载该Servlet的优先级越高;
name属性:
可以指定也可以不指定,通过getServletName()可以获取到,
若不指定,则为Servlet的完整类名
urlPatterns/value属性:
String[]类型,可以配置多个映射,
如:urlPatterns={"/user/test", "/user/example"}
urlPatterns的常用规则:
/*或者/:拦截所
*.do:拦截指定后缀
/user/test:拦截路径
/user/*.do、/*.do、test*.do都是非法的,启动时候会报错
X
Y
Z