关于java:spring-常用注解简单解析

Spring局部

1.申明bean的注解

@Component 组件,没有明确的角色

@Service 在业务逻辑层应用(service层)

@Repository 在数据拜访层应用(dao层)

@Controller 在展示层应用,控制器的申明

2.注入bean的注解

@Autowired:由Spring提供 它能够对类成员变量、办法及构造函数进行标注,实现主动拆卸的工作

@Qualifier指定注入Bean的名称 如果容器中有一个以上匹配的Bean时,则能够通过@Qualifier注解限定注入的Bean名称

@Scope注解来显式指定Bean作用范畴

@Value:注入根本数据类型和 String 类型数据的

@Resource:间接依照 Bean 的 id 注入,如果依据id无奈找到则依据类型进行查找。

都能够注解在set办法和属性上,举荐注解在属性上(高深莫测,少写代码)。

3.java配置类相干注解

@Configuration 申明以后类为配置类,相当于xml模式的Spring配置(类上)

@Bean 注解在办法上,申明以后办法的返回值为一个bean,代替xml中的形式(办法上)

@Configuration 申明以后类为配置类,其中外部组合了@Component注解,表明这个类是一个bean(类上)

@ComponentScan 用于对Component进行扫描,相当于xml中的(类上)

@WishlyConfiguration 为@Configuration与@ComponentScan的组合注解,能够代替这两个注解

4.切面(AOP)相干注解

Spring反对AspectJ的注解式切面编程。

@Aspect 申明一个切面(类上) 应用@After、@Before、@Around定义建言(advice),可间接将拦挡规定(切点)作为参数。

@After 在办法执行之后执行(办法上) @Before 在办法执行之前执行(办法上) @Around 在办法执行之前与之后执行(办法上)

@PointCut 申明切点 在java配置类中应用@EnableAspectJAutoProxy注解开启Spring对AspectJ代理的反对(类上)

5.@Bean:该注解只能写在办法上,表明应用此办法创立一个对象,并且放入 spring 容器

@PostConstruct:用于指定初始化办法

@PreDestroy:用于指定销毁办法

@Scope:指定 bean 的作用范畴(singleton 、prototype、 request 、session、globalsession)。

Singleton (单例,一个Spring容器中只有一个bean实例,默认模式), Protetype (每次调用新建一个bean), Request (web我的项目中,给每个http request新建一个bean), Session (web我的项目中,给每个http session新建一个bean), GlobalSession(给每一个 global http session新建一个Bean实例)

@StepScope 在Spring Batch中还有波及

@PostConstruct 由JSR-250提供,在构造函数执行完之后执行,等价于xml配置文件中bean的initMethod

@PreDestory 由JSR-250提供,在Bean销毁之前执行,等价于xml配置文件中bean的destroyMethod

6.环境切换

@Profile 通过设定Environment的ActiveProfiles来设定以后context须要应用的配置环境。(类或办法上)

@Conditional Spring4中能够应用此注解定义条件话的bean,通过实现Condition接口,并重写matches办法,从而决定该bean是否被实例化。(办法上)

7.异步相干

@EnableAsync 配置类中,通过此注解开启对异步工作的反对,叙事性AsyncConfigurer接口(类上)

@Async 在理论执行的bean办法应用该注解来申明其是一个异步工作(办法上或类上所有的办法都将异步,须要@EnableAsync开启异步工作)

8.定时工作相干

@PropertySource:用于加载.properties 文件中的配置。例如咱们配置数据源时,能够把连贯数据库的信息写到 properties 配置文件中,就能够应用此注解指定 properties 配置文件的地位。

@EnableScheduling 在配置类上应用,开启打算工作的反对(类上)

@Scheduled 来申明这是一个工作,包含cron,fixDelay,fixRate等类型(办法上,需先开启打算工作的反对)

9.@Enable*注解阐明

这些注解次要用来开启对xxx的反对。 @EnableAspectJAutoProxy 开启对AspectJ主动代理的反对

@EnableAsync 开启异步办法的反对

@EnableScheduling 开启打算工作的反对

@EnableWebMvc 开启Web MVC的配置反对

@EnableConfigurationProperties 开启对@ConfigurationProperties注解配置Bean的反对

@EnableJpaRepositories 开启对SpringData JPA Repository的反对

@EnableTransactionManagement 开启注解式事务的反对

@EnableTransactionManagement 开启注解式事务的反对

@EnableCaching 开启注解式的缓存反对

10.测试相干注解

@RunWith 运行器,Spring中通常用于对JUnit的反对

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration 用来加载配置ApplicationContext,其中classes属性用来加载配置类

@ContextConfiguration(classes={TestConfig.class})

SpringMVC局部

@EnableWebMvc 在配置类中开启Web MVC的配置反对,如一些ViewResolver或者MessageConverter等,若无此句,重写WebMvcConfigurerAdapter办法(用于对SpringMVC的配置)。

@Controller 申明该类为SpringMVC中的Controller

@RequestMapping 用于映射Web申请,包含拜访门路和参数(类或办法上)

@ResponseBody 反对将返回值放在response内,而不是一个页面,通常用户返回json数据(返回值旁或办法上)

@RequestBody 容许request的参数在request体中,而不是在间接连贯在地址前面。(放在参数前)

@PathVariable 用于接管门路参数,比方@RequestMapping(“/hello/{name}”)申明的门路,将注解放在参数中前,即可获取该值,通常作为Restful的接口实现办法。

@RestController 该注解为一个组合注解,相当于@Controller和@ResponseBody的组合,注解在类上,意味着,该Controller的所有办法都默认加上了@ResponseBody。

@ControllerAdvice 通过该注解,咱们能够将对于控制器的全局配置搁置在同一个地位,注解了@Controller的类的办法可应用@ExceptionHandler、@InitBinder、@ModelAttribute注解到办法上, 这对所有注解了 @RequestMapping的控制器内的办法无效。

@ExceptionHandler 用于全局解决控制器里的异样

@InitBinder 用来设置WebDataBinder,WebDataBinder用来主动绑定前台申请参数到Model中。

@ModelAttribute 原本的作用是绑定键值对到Model里,在@ControllerAdvice中是让全局的@RequestMapping都能取得在此处设置的键值对。

@Mapper注解的的作用
1:为了把mapper这个DAO交給Spring治理
2:为了不再写mapper映射文件
3:为了给mapper接口 主动依据一个增加@Mapper注解的接口生成一个实现类

@Param注解
办法参数多余一个时尽量应用@Param注解进行润饰并指定名字,而后在Mapper文件中便能够通过相似#{username}形式进行获取,否则只能通过#{arg0},#{arg1}或者#{param1},#{param2}等形式进行获取。
当办法中的参数利用在动静SQL中时无论多少个参数,尽量应用@Param注解进行润饰并定义。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理