Spring的使用两种方式
XML配置和注解区别
像之前博主写的博文,想要某一个bean被SpringIOC去管理,使用xml方式去配置注入的。不懂的可以看一下
使用注解的话,将需要被SpringIOC管理的类顶部,添加@Component注解,注解达到的效果和xml配置是一样的
-
有些公司只用其中一种,也有公司xml 配置与注解配置一起使用
-
注解的优势:配置简单,维护方便
-
xml的优势:单修改xml时不用改源码,不用重新编译和部署
-
结论: 看团队开发规范进行选择,没有强调一定用哪个 更多的是xml+注解配合使用,比如spring整合mybatis
注解使用示例
Step1:Service层接口
public interface VideoService {
int save(Video video);
Video findById(int id);
}
Step2:ServiceImpl实现类
@Component("videoService")//交给Spreing扫描 将该类实例化Bean加到IOC容器当中 起别名的方式相当于Bean当中的id
//如果没有起别名默认就是类的小写
public class VideoServiceImpl implements VideoService {
public int save(Video video) {
System.out.println("保存video");
return 1;
}
public Video findById(int id) {
System.out.println("根据id查询视频信息");
return new Video();
}
}
Step3:main函数测试
之前的xml配置全部注释掉就行了,这里就不上测试结果了,无非就是输出一句话
public class App1 {
public static void main(String [] args){
//用于注解上下文
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
//指定扫描包 加注解后告诉spring去扫描,对应的包,发现有对应的注解时候就会将对应的类加到SpringIOC容器当中
context.scan("net.jhclass");
//完成Spring初始化操作 核心方法
context.refresh();
//获取bean对象
VideoService videoService = (VideoService)context.getBean("videoService");
videoService.findById(1);
}
}
常用注解和XML对比
-
常用注解
-
bean定义
-
xml方式:
<bean id="video" class="net.jhclass.project.domain.Video"> <property name="id" value="9"/> <property name="title" value="测试Spring注入"/> </bean>
-
注解方式:@Component 通用组件 细分: 不同层用不同注解
@Controller (用于web层)
@Service (用于service层)
@Repository (用于dao仓库层)
-
-
bean取名
- xml方式:通过id或者name
- 注解方式:@Component(“XXXX”)
-
bean注入
-
xml方式:通过property标签里的属性
-
注解方式:类型注入@Autowired 名称注入@Qualifier
-
-
bean生命周期
- xml方式:init-method、destroy-method
- 注解方式:@PostConstruct初始化、@PreDestroy销毁。类中方法上使用
-
bean作用范围
- xml方式:scope属性
- 注解方式:@scope(prototype)注解
-