Spring中常用的注解

1.声明bean注解

@Component 没有明确的生明,当组件不好归类的时候使用

@Controller 用在控制层(Controller层)

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

@Repository 在数据访问层使用(dao层)

2.装配bean时常用的注解

@Autowired  

将 Spring 容器中的 bean 自动的和我们需要这个 bean 的类组装在一起。

可用于为类的属性、构造器、方法进行注值,用于bean的field、setter方法以及构造方法上,显式地声明依赖。

@Component
public class User {
    @Autowired
    private Address address;
}

@Resource:不属于spring的注解,而是来自于JSR-250位于java.annotation包下,使用该annotation为目标bean指定协作者Bean。

3、配置类相关注解

@Bean:产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中。

@Bean
    public MyBean myBean(){
        return new MyBean();
    }

@cope:@Scope 设置Spring容器如何新建Bean实例,默认是@scope("Singleton "),即单例模式。其设置类型包括:

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

@Configuration :用于定义配置类,可替换xml配置文件

//定义该类为配置类
@Configuration
public class myConfiguration {
    public myConfiguration() {
        System.out.println("myConfiguration容器启动初始化。。。");
    }
}

@ComponentScan:主要就是定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中,默认装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中。

@ComponentScan(value="com.demo")
@Configuration
public class myConfig {
}

4、@Value相关注解

@Value:通过注解将常量、配置文件中的值、其他bean的属性值注入到变量中,作为变量的初始值。方式如下:

1)、普通注入

@Value("张三")
private String name; // 注入普通字符串

2)、bean属性、系统属性、表达式注入,使用@Value("#{}")。bean属性注入需要注入者和被注入者属于同一个IOC容器,或者父子IOC容器关系,在同一个作用域内。

// 注入其他Bean属性:注入beanInject对象的属性another,类具体定义见下面
@Value("#{beanInject.another}")
private String fromAnotherBean; 
// 注入操作系统属性
@Value("#{systemProperties['os.name']}")
private String systemPropertiesName; 
//注入表达式结果
@Value("#{T(java.lang.Math).random() * 100.0 }")
private double randomNumber;

3)、配置文件属性注入@Value("${}")

@Value("#{}")读取配置文件中的值,注入到变量中去。配置文件分为默认配置文件application.properties和自定义配置文件

•application.properties。application.properties在spring boot启动时默认加载此文件

5、spring MVC模块注解

@RequestMapping:这个注解用于将url映射到整个处理类或者特定的处理请求的方法。

既可以作用在类级别,也可以作用在方法级别。

@RequestMapping(/hello/*)
  public void sayHello(){
		//请求为/hello       /*都会进入这个方法!
		//例如:/hello/123
		//可以通过get/post 请求
  }7

@RequestParam:将请求的参数绑定到方法中的参数上,有required参数,默认情况下,required=true,也就是改参数必须要传。如果改参数可以传可不传,可以配置required=false。

 @RequestMapping("/happy")
  public String sayHappy(
  @RequestParam(value = "name", required = false) String name,
  @RequestParam(value = "age", required = true) String age) {
  //age参数必须传 ,name可传可不传
  ...
  }

@PathVariable:参数可以是任意的简单类型,如int, long, Date等等。Spring会自动将其转换成合适的类型或者抛出 TypeMismatchException异常。当然,我们也可以注册支持额外的数据类型。
@PathVariable支持使用正则表达式,这就决定了它的超强大属性,它能在路径模板中使用占位符,可以设定特定的前缀匹配,后缀匹配等自定义格式。

@RequestBody : @RequestBody是指方法参数应该被绑定到HTTP请求Body上。

@RequestMapping(value = "/something", method = RequestMethod.PUT)
public void handle(@RequestBody String body,@RequestBody User user){
   //可以绑定自定义的对象类型
}

@ResponseBody : @ResponseBody与@RequestBody类似,它的作用是将返回类型直接输入到HTTP response body中。
@ResponseBody在输出JSON格式的数据时,会经常用到。

@RequestMapping(value = "/happy", method =RequestMethod.POST)
@ResponseBody
public String helloWorld() {    
return "Hello World";//返回String类型
}

@RestController :用来创建REST类型的控制器,与@Controller类型。@RestController就是这样一种类型,它避免了你重复的写@RequestMapping与@ResponseBody。

@ModelAttribute :@ModelAttribute可以作用在方法或方法参数上,当它作用在方法上时,标明该方法的目的是添加一个或多个模型属性(model attributes)。
该方法支持与@RequestMapping一样的参数类型,但并不能直接映射成请求。控制器中的@ModelAttribute方法会在@RequestMapping方法调用之前而调用。

@ExceptionHandler 用于全局处理控制器里的异常

6.SpringBoot核心注解

1.@SpringBootApplication*

用于Spring主类上最最核心的注解,自动化配置文件,表示这是一个SpringBoot项目,用于开启SpringBoot的各项能力。

相当于@SpringBootConfigryation、@EnableAutoConfiguration、@ComponentScan三个注解的组合。

2.@EnableAutoConfiguration

允许SpringBoot自动配置注解,开启这个注解之后,SpringBoot就能根据当前类路径下的包或者类来配置Spring Bean。

24.@Import

Spring 3.0添加注解,用来导入一个或者多个@Configuration注解修饰的配置类

如有遗漏或有误的地方,希望帮忙指出。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值