对于java bean的定义和依赖配置,使用xml文件真心是不方便。
今天学习如何用注解,解决bean的定义和注入。
常用注解:
1、自动注入:@Resources,@Autowired
2、Bean定义:@Component、@Repository、@Service 和 @Constroller
@Component是个泛化概念,可以用在任何层次。如果是web开发,尽量用@Repository、@Service 和 @Constroller
Demo:
以丁磊养猪为例,Pig和DingLei两个类
1、Pig类,以@Component定义为bean
@Componentpublic classPig {privateDouble weight;privateString color;publicPig(){this.weight = 55.8;this.color = "black";
}publicDouble getWeight() {returnweight;
}public voidsetWeight(Double weight) {this.weight =weight;
}publicString getColor() {returncolor;
}public voidsetColor(String color) {this.color =color;
}publicString toString(){return weight + " kg " + color + " pig!";
}
}
View Code
2、DingLei类,以@Component定义为bean,同时用@Autowired注入依赖pig
@Componentpublic classDingLei {
@AutowiredprivatePig pig;publicPig getPig() {returnpig;
}public voidsetPig(Pig pig) {this.pig =pig;
}publicString toString(){return "Dinglei has a " +pig.toString();
}
}
View Code
3、bean.xml文件中,配置包扫描,注解才生效
:启用注释驱动自动注入
:对类包进行扫描以实施注释驱动 Bean 定义,同时隐式启用注释驱动自动注入。因此,配置这个就可以
View Code
4、测试类
public classTestAnotation {
@SuppressWarnings("resource")public static voidmain(String[] arg) {
ApplicationContext context= new ClassPathXmlApplicationContext("bean.xml");
DingLei dingLei= (DingLei) context.getBean("dingLei");
System.out.println( dingLei.toString() );
}
}
View Code
5、运行测试类,可以看到输出。说明注解成功定义bean,并成功完成注入
信息: Loading XML bean definitions from classpath resource [bean.xml]
Dinglei has a55.8 kg black pig!
参考:
谢谢无私分享的伙伴,写的非常详细的一篇:Spring注解详解