赞
踩
@SpringBootApplication出现在程序入口类中,这个注解主要包含三个主要注解
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan( excludeFilters = {@Filter( type = FilterType.CUSTOM, classes = {TypeExcludeFilter.class} ), @Filter( type = FilterType.CUSTOM, classes = {AutoConfigurationExcludeFilter.class} )} ) public @interface SpringBootApplication {
这些注解的功能基本一致,被这些注解的类会被注册到IOC容器中,只是根据使用场景不同使用不同的名字进行标识
/** * 1、使配置类变成了full类型的配置类,spring在加载Appconfig的时候,Appconfig由普通类型转变为cglib代理类型 , * 2、在 @Bean method中使用,是单例的,不会创建对个对象 */ @Configuration(proxyBeanMethods=true)//(proxyBeanMethods=true)默认配置,可不用 public class AppConfig { @Bean public User user(){ return new User(); } @Bean public Cat cat(){ return new Cat(); } @Bean //条件注解,只有TestConditional返回为true时,才能实例化animal @Conditional(value = TestConditional.class) public Animal animal(){ //使用@Configuration从IOC中拿对象,不会每次new cat return new Animal (cat()); }
一般和@Controller搭配使用,可以放到类上也可以放到方法上,主要作用表示该方法的返回结果直接写入 HTTP response body 中,而不会被解析为跳转路径,也就是说不会经过视图解析器。简单点就是@ResponseBody会把对象转换成json格式的数据返回到前端
@Controller
@ResponseBody
public class HelloController {
@Autowired
Person person;
@GetMapping("/hello")
//@ResponseBody
public String hello(){
return "hello spring boot";
}
@RestController是一个组合注解包含@Controller、@ResponseBody,现在控制层一般用这个
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
@AliasFor(
annotation = Controller.class
)
String value() default "";
}
这3个注解主要是从容器中找到通过@Controller、@Service、@Repository、@Component等注解的bean
业务逻辑层通过@Service把类注入到IOC容器,这里也已经把UserService接口给注入到IOC容器中了
通过@Autowired直接拿接口
也可以直接拿实现类
@ Autowired
UserServiceImpl userServiceImpl;
当一个接口有多个实现类时,需要两个注解配合使用,下面有两个接口实现,在@Service(“userServiceImpl”)和@Service(“userServiceImpl1”)
在使用的时候需要加上@Service(“userServiceImpl”)配置的名字
这个注解相当于@AutoWired和@Qualifier的组合
用法如下
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。