Spring注解(持续更新)
Posted _陈昱先
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring注解(持续更新)相关的知识,希望对你有一定的参考价值。
注解
- 在Spring中,标识一个@符号,Spring会优先查看该指令
- Spring配置文件对应的是父容器,SpringMVC配置文件对应的是子容器,前者做一般配置数据源,事务,注解等, 后者配置控制层相关(Controller)
@Controller
在SpringMVC中,控制器Controller负责处理有DispatcherServlet分发的请求,把用户请求的数据经过业务处理之后封装成为一个Model,再把该Model返回给对应的View进行展示.
使用@Controller标记类是一个Controller,@RequestMapping,@RequestParam等一些注解用于定义映射
@Controller声明MyController是一个controller对象,一旦有某个类声明了@Controller注解,在容器启动的时候就会自动加载到Spring的Bean工厂中,所以不用new
@RestController 等价于@Controller+@ResponseBody 即加上返回json的功能
@Component
在Spring中,持久层使用@Repository(注入服务), 业务层使用@Service(注入dao), 控制层使用@Controller(实现dao), 而对于无法辨别具体哪个的使用@Component来进行凝视
@Component(“userManager”) 注解容器bean,名字为userManager
@ComponentScan 在Spring中启动组件扫描
若是没有其他配置,@ComponentScan默认会扫描与配置类相同的包下所有子包中带有@Component注解的类,并为其创建bean.
@ComponentScan(basePackages={“other package”,”…”})
@ComponentScan(basePackageClasses={“Class1.class”,”Class2.class”})
@Bean
@Bean是一个方法级别上的注解,主要用于@Configuration注解的类里,也可用于@Component注解的类里
@Bean对应Spring的xml中<bean> @Configuration对应Spring的xml中<beans>
@Bean注解用于告诉方法,产生一个Bean对象,然后将该Bean对象交由Spring管.产生的这个Bean对象只会被Spring调用一次,随后Spring会把该对象存入IOC容器中
此处若是@Bean没有指定名称,则在调用时取方法名,即context.getBean(“getBean”)
@RequestMapping
@RequestMapping注解会把HTTP请求映射到SpringMVC和REST控制器的处理方法上
@RequestMapping可以在类级别,也可以在方法级别上使用
@RequestMapping(value={“”,”/”,”aba*/”})
//value为多个意味着多个地址映射到一个类/方法
@RequestMapping(value=”hha”,params={“person=20”})
//只处理/param?person=20 的连接
(@RequestParam(value=“arg”,required=false) String str)
//若是请求参数与处理方法的参数一至,则value无值 value=arg à www.XXX.xx?arg=1
required=yes 说明必须传参
defaultValue 默认取值
@RequestMapping处理HTTP方法
@RequestMapping(method=RequestMethod.GET/POST/DELETE/PUT…)
快捷方式 @GetMapping,@PostMapping,@PutMapping
@GetMapping{“/person/{id}”};
@ResponseBody 将后续的方法返回解雇以I/O流写入到浏览器
@RequestBody 接收一个json对象的字符串
@SuppressWarnings
忽略掉指定的警告
@Transational
事务
@Value
注入值
若是在Controller中配置@Value,则需要在SpringMVC配置文件中配置:
<context:property-placeholder location=”classpath:{my variable}.properties”/>
不通过配置文件
@Value(“hah”)
Private String str; //不通过配置文件注入字符串
@Value(“#{beanInject.anther}”)
Private String fromAntherBean; //不通过配置文件注入其他Bean属性
通过配置文件
配置文件主要有两类
- application.properties. application.properties在Spring Boot启动时自动加载此文件
- 自定义属性文件 自定义属性文件通过@PropertySource加载.可以同时加载多个文件. 如果第一个属性文件和第二个属性文件存在相同key,以第二个为准
@ConfigurationProperties
把配置文件信息自动封装成实体类
@Autowired
Autowired为Spring提供注解,按照ByType注入,可以把bean里的getter/setter方法省略,自动get/set
@Autowired不仅可以使用在构造器上,也可以用在属性的setter方法上(setter没有任何特殊性,即@Autowired其实可以用在类的任何方法上)
Spring会尽可能满足bean的依赖,也就是方法参数上的依赖,假设只有一个bean匹配依赖需求,那么该bean会被装配进去 若没有匹配的bean,在应用上下文创建时,spring会抛出异常,避免异常à@Autowired(required=false) 多个bean满足匹配,spring会抛出异常
先用@Component(等)注入需要的, 再使用@Autowired取依赖
@Configuration
标注其为一个配置类
@configuration相当于beans @Bean相当于bean
@SessionAttributes
默认情况下Spring MVC将模型中的数据存放在request域.当一个请求结束后,数据就失效了,跨页面使用需要session,@sessionAttributes可以将数据存储一份到session域中
@Id
标注主键
@Id
@Column(name=”ID”)
private int id=0;
@ManyToMany
关系/对象映射 多对多
Mappedby 标签定义在被拥有方,指向拥有方 理解为:拥有方能够自动维护跟被拥有方的关系
@Entity
Hibernate的注解
@Entity
对实体注释,任何Hibernate映射都要有该对象,是一个JPA实体
@Table
声明数据库表,,没有则默认使用类名
@Id
声明主键
@GeneratedValue
自动生成,一般与@Id一起使用
@Column
映射某一列
@Primary
在众多相同的Bean中,优先使用@primary注解的Bean
@SpringBootApplication
包含三个注解:@SpringBootConfiguration, @EnableAutoConfiguration, @ComponentScan
@SpringBootConfiguration
使用@Configuration+@Bean可以创建简单的配置类,取代xml
@SpringBootConfiguration标识这个类可以使用Spring IOC作为bean定义的来源
@Bean告诉Spring,该对象作为在Spring上下文中的bean
@EnableAutoConfiguration
自动配置Spring上下文,根据路径与bean定义自动配置.开启Spring Boot自动配置
@ComponentScan
自动扫描指定包下的全部标有@Component的类,并注册为bean,包括@Component的子注解@Service,@Repository,@Controller
@PathVariable
用于获取动态参数的值
@RequestMapping(“/{type}”)
Public void test(@PathVariable(“type”) String type){
}
@Profile(“xxx”)
只有再xxxx运行激活时才使用注解的类
运行:配置spring.profiles.active
@Scheduled
定时任务 @Scheduled(cron = " ") 需要在Application加@EnabledScheduling
* 第一位,表示秒,取值0-59 * 第二位,表示分,取值0-59 * 第三位,表示小时,取值0-23 * 第四位,日期天/日,取值1-31 * 第五位,日期月份,取值1-12 * 第六位,星期,取值1-7,星期一,星期二...,注:不是第1周,第二周的意思 另外:1表示星期天,2表示星期一。 * 第7为,年份,可以留空,取值1970-2099 第七位可以省略
@Scheduled(fixRate = "60*1000", initalDelay = 1*1000) //一分钟执行一次,延时一秒
以上是关于Spring注解(持续更新)的主要内容,如果未能解决你的问题,请参考以下文章