0.@Configuration
1.@Bean
描述:在spring容器中定义一个bean供@Autowired使用
注解对象:方法
参数:
value -- bean别名和name是相互依赖关联的,value,name如果都使用的话值必须要一致。整个程序之中不能存在相同name||value的Bean
name -- bean名称,如果不写会默认为注解的方法名称
autowire -- 自定装配默认是不开启的,建议尽量不要开启,因为自动装配不能装配基本数据类型、字符串、数组等,这是自动装配设计的局限性,以及自动装配不如显示依赖注入精确,ps:此方法已经过期了,不推荐使用
initMethod -- bean的初始化之前的执行方法,该参数一般不怎么用,因为可以完全可以在代码中实现
destroyMethod -- bean销毁执行的方法
@Configuration public class Test { @Bean(value = "bean")//如果此处没有定义value||name,那么默认为被注解方法的首字母小写的方法名。即@Bean(value = "bean1") public String bean1(){ return "Bean test val"; } }
1.@Autowired
描述:将Bean的值装配给注解的字段
注解对象:字段
参数:
required -- 是否必须存在对应的Bean,否则将会报错。默认值:true
@Autowired String bean1; @RequestMapping("/index") public void index() throws Exception{ System.out.println(bean1); }
2.@Quqlifier
描述:装载指定名称的Bean,如果不指定,则默认装载与注解字段字段同名的,首字母小写的的Bean
注解对象:被@Autowired注解的字段
参数:
value:指定的Bean的name或value
@Qualifier(value = "bean") @Autowired String bean1; @RequestMapping("/index") public void index() throws Exception{ System.out.println(bean1); }
3.@Value
描述:将application.properties指定属性的值,赋值给被注解的字段
注解对象:字段
参数:
value -- 如果使用的是模板语法,被注解字段绑定的值将是application.properties中对应前缀的值。否则则为value的值
//application.properties testobj.prop1=testobj.prop1.value
@RestController public class index { @Value(value = "prop1 value") String prop1; @Value(value = "${testobj.prop1}") String prop2; @RequestMapping("/index") public void index() throws Exception { System.out.println(prop1);//prop1 value System.out.println(prop2);//testobj.prop1.value } }
3.@ConfigurationProperties
描述:读取application.properties中的属性,并将其属性值赋值给被注解的类,与@Value不同的是,@Value只能指定一个字段,而@ConfigurationProperties可以批量指定字段
注解对象:class
参数:
prefix -- 指定的application.properties中属性的前缀
//application.properties testobj.name=obj name testobj.index=obj index
//@ConfigurationProperties 定义
@Component @ConfigurationProperties(prefix = "testobj") public class Test2 { //对应的字段可以没有get方法,但是必须要拥有set方法,否则无法将application.properties值写入对应的字段 public String getName() { return name; } public void setName(String name) { this.name = name; } public String getIndex() { return index; } public void setIndex(String index) { this.index = index; } public String name; public String index; }
//使用
@RestController public class index { //使用@Autowired 获取到生成的Bean,如果使用 new Test2();的话得到的是一个新的实例对象,而非被ConfigurationProperties注解生成的Bean对象,实例对象是没有值的 @Autowired Test2 test2; @RequestMapping("/index") public void index() throws Exception{ Test2 t=test2; System.out.println(t.name); } }
4.@ComponentScan
表明容器
@Component
@