SpringBoot中常用注解汇总

1.声明Bean的注解:

  • @Component : 组件,没有明确的角色
  • @Service : 在业务逻辑层(service层)使用
  • @Repository : 在数据访问层(dao层)使用.
  • @Controller : 在展现层(MVC--SpringMVC)使用
  • @RestController (@ResponseBody与@Controller的派生注解)

2.注入Bean的注解(自动装配bean):

  • @Autowired : Spring提供的注解.
  • @Inject : JSR-330提供的注解 基本不用,可以舍弃
  • @Resource : JSR-250提供的注解

3.配置文件的注解:

@Configuration : 声明当前类是个配置类,相当于一个Spring配置的xml文件.
@ComponentScan (cn.test.demo): 自动扫描包名下所有使用 @Component @Service  @Repository @Controller 的类,并注册为Bean
@WiselyConfiguration : 组合注解 可以替代 @Configuration和@ComponentScan
@Bean : 注解在方法上,声明当前方法的返回值为一个Bean.

4.AOP切面编程注解:

    @Aspect : 声明这是一个切面
    @After @Before. @Around 定义切面,可以直接将拦截规则(切入点 PointCut)作为参数
    @PointCut : 专门定义拦截规则 然后在 @After @Before. @Around 中调用
    @Transcational : 事务处理
    @Cacheable : 数据缓存
    @EnableAaspectJAutoProxy : 开启Spring 对 这个切面(Aspect )的支持
    @Target (ElementType.TYPE):元注解,用来指定注解修饰类的那个成员 -->指定拦截规则
    @Retention(RetentionPolicy.RUNTIME)
        --->当定义的注解的@Retention为RUNTIME时,才能够通过运行时的反射机制来处理注解.-->指定拦截规则

5.Spring 常用配置:

    @import :导入配置类
    @Scope : 新建Bean的实例 @Scope("prototype") 声明Scope 为 Prototype
    @Value : 属性注入
        @Value ("hello,world")  --> 普通字符串注入
        @Value ("#{systemProperties['os.name']}") -->注入操作系统属性
        @Value ("#{ T (java.lang.Math).random()  * 100.0 }") --> 注入表达式结果
        @Value ("#{demoService.another}") --> 注入其他Bean属性
        @Value ( "classpath:com/wisely/highlight_spring4/ch2/el/test.txt" ) --> 注入文件资源
        @Value ("http://www.baidu.com")-->注入网址资源
        @Value ("${book.name}" ) --> 注入配置文件  注意: 使用的是$ 而不是 #

@ContextConfiguration : 加载配置文件

    @ContextConfiguration(classes = {TestConfig.class})
    @ContextConfiguration用来加载ApplicationContext
    classes属性用来加载配置类

@WebAppCofiguration : 指定加载 ApplicationContext是一个WebApplicationContext

6.SpringMVC 常用注解:

@Controller : 注解在类上 声明这个类是springmvc里的Controller,将其声明为一个spring的Bean.
@RequestMapping :可以注解在类上和方法上 映射WEB请求(访问路径和参数)

    @RequestMapping(value= "/convert",produces+{"application/x-wisely"}) 设置访问URL 返回值类型

@ResponseBody : 支持将返回值放入response体内 而不是返回一个页面(返回的是一个组数据)
@RequestBody : 允许request的参数在request体中,而不是直接连接在地址后面 次注解放置在参数前
@Path Variable : 用来接收路径参数 如/test/001,001为参数,次注解放置在参数前
@RestController : @Controller + @ResponseBody 组合注解
@ControllerAdvice : 通过@ControllerAdvice可以将对已控制器的全局配置放置在同一个位置
@ExceptionHandler : 用于全局处理控制器的异常

    @ExceptionHandier(value=Exception.class) -->通过value属性可过滤拦截器条件,拦截所有的异常
@WebAppConfiguration("src/main/resources") : 注解在类上,用来声明加载的ApplicationContex 是一个WebApplicationContext ,它的属性指定的是Web资源的位置,默认为 src/main/webapp ,自定义修改为 resource


7.Spring Boot 注解:

 @SpringBootApplication : 是Spring Boot 项目的核心注解 主要目的是开启自动配置

    @SpringBootApplication注解是一个组合注解,主要组合了@Configuration .+@EnableAutoConfiguration.+@ComponentScan

@Value : 属性注入,读取properties或者 Yml 文件中的属性
@ConfigurationProperties : 将properties属性和一个Bean及其属性关联,从而实现类型安全的配置

    @ConfigurationProperties(prefix = "author",locations = {"classpath:config/author.properties"})
    通过@ConfigurationProperties加载配置,通过prefix属性指定配置前缀,通过location指定配置文件位置

@EnableAutoConfiguration 注解:作用在于让 Spring Boot   根据应用所声明的依赖来对 Spring 框架进行自动配置
        这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring。由于spring-boot-starter-web添加了Tomcat和Spring MVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置。
@ Configuration @EnableAutoConfiguration (exclude={xxxx.class}) 禁用特定的自动配置

案例

 

@Entity

@Table(name = "S_PRODUCEINFO" )

@Data

@NoArgsConstructor

@AllArgsConstructor

public class ProduceInfoEntity {

 

    @Id

    @Column(name = "app_name", unique = true, length = 50)

    private String name;

 

    @Column(name = "status")

    @Enumerated(EnumType. STRING)

    private ProduceStatus status;

 

    @Column(name = "create_time", updatable = false)

    @Temporal(TemporalType. TIMESTAMP)

    @CreationTimestamp

    private Date createTime;

 

    @Column(name = "update_time")

    @Temporal(TemporalType. TIMESTAMP)

    @UpdateTimestamp

    private Date updateTime;

@Entity : 映射数据库实体类

@Table(name = "S_PRODUCEINFO" ) : 表名为 "S_PRODUCEINFO"

@Id : 声明主键ID

@Column(name = "app_name", unique = true, length = 50) :对应数据库字段,属性

@Enumerated(EnumType. STRING) : 采用枚举值类型和数据库字段进行交互

@Temporal : 时间格式 映射数据库会得到规定时间格式的日期

       @Enumerted(EnumType.STRING)  HH:MM:SS 格式的日期

       @Enumerted(EnumType.DATE) 获取年月日  yyyy-MM-dd

       @Enumerted(EnumType.TIME) 获取时分秒  HH:MM:SS
 

 @Autowired按照类型byType自动注入 默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用

@Resource 默认按名称byName装配,最好用这个 里面有属性name与type 如果设置type也可以按类型装配

都可以用来装配bean. 都可以写在字段上,或写在setter方法上


@Autowired()@Qualifier("baseDao")

privateBaseDao baseDao;

或放在set方法上

    @Autowired   
    public void setUserDao(@Qualifier("userDao") UserDao userDao) {   
        this.userDao = userDao;   
    }  

@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了。

一般@Autowired和@Qualifier一起用,@Resource单独用。 

8.定义Bean的作用域和生命过程

@Scope("prototype")

值有:singleton,prototype,session,request,session,globalSession

@PostConstruct

相当于init-method,使用在方法上,当Bean初始化时执行。

@PreDestroy

相当于destory-method,使用在方法上,当Bean销毁时执行。

--声明式事务

@Transactional  


 


 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值