【归纳】springboot中的IOC注解:注册bean和使⽤bean
⽬前了解的springboot中IOC注解主要分为两类:
1. 注册bean:@Component和@Repository、@Service、@Controller 、@Configuration
共同之处:这些注解都使⽤在类上,将类标识为Bean,由Spring扫描到后会⽣成⼀个单例bean放到容器中。
不同之处在于:
@Component是⼀个泛化的概念,仅仅表⽰⼀个组件 (Bean) ,可以作⽤在任何层;
@Repository、@Service、@Controller 都包含@Component注解:
@Repository⼀般修饰持久层——Dao层
@Service⼀般修饰服务层(或业务层)——Service层
@Controller通常作⽤在控制层——Controller层
@Configuration,在@Component的基础上,会对修饰的类做⼀个增强(利⽤CGLIB动态代理)。它⼀般⽤来修饰配置类——Configuration⽂件夹。
注:在类上使⽤以上注解后,还可以⽤@Bean注解修饰⽅法,它很明确地告诉被注释的⽅法产⽣⼀个Bean,然后交给Spring容器
2. 使⽤bean:@Autowired、@Resource
@Autowired与@Resource都可以⽤来装配bean,都可以写在字段上,或写在setter⽅法上
@Autowired默认以Type⽅式注⼊
@Resource默认以Name⽅式注⼊,但它可以指定为Type⽅式(传Type值即可),也可以指定为Name和Type同时皆有的⽅式(那么必须到⼀个Bean,它的Name和Type同时满⾜才可以注⼊)
⽰例:
注册bean
@Configuration
public class MyBeans {
@Bean("autowire")
public Integer autowire_bean(){
resource和autowired注解的区别return 1;
}
@Bean("resource_name1")
public String resource_bean1(){
return "this is resource_bean1";
}
@Bean("resource_name2")
public String resource_bean2(){
return "this is resource_bean2";
}
}
使⽤bean:
@RestController    //@RestController与@Controller有关
public class MyController {
//@Autowired默认按类型注⼊,如果同⼀类型有多个bean就报错
@Autowired
private Integer autowire_bean;
//@Resource⽀持name注⼊或type注⼊,或同时指定两者注⼊(需同时满⾜name和type)
@Resource(name = "resource_name1")
private String resource_bean1;
@Resource(name = "resource_name2",type = String.class)
private String resource_bean2;
@GetMapping("/autowire_bean")
public String getAutowire_bean(){
return "autowire_bean: " + autowire_bean + "<br>resource_bean1: "                + resource_bean1 + "<br>resource_bean2: " + resource_bean2;    }
}
  结果:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。