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注解修饰的配置类
如有遗漏或有误的地方,希望帮忙指出。