一、spring ioc(控制反转):配置文件xml中管理、创建java对象(bean)
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
创建bean对象(在配置文件中交给 Spring IoC 容器 负责创建、管理、依赖注入、销毁的 Java 对象,就叫 Spring Bean):spring ioc容器的java对象称呼bean
通过set注入,并给属性赋值,前提是类中有set方法(也可以通过构造器注入)
cpp
<bean id="cat" class="com.Cat">
<property name="age" value="18"/>
..................
</bean>
<bean id="cat" class="com.Dog">
<property name="age" value="20"/>
..................
</bean>
--------------------------------------------
由此可知,所有的java类交由spring ioc(控制反转)容器管理的java对象,可以通过生成bean来手动配置。
优点:
1、配置和业务逻辑完全分离,运维人员改配置不用动代码、不用重新编译。
2、方便拆分 xml(开发 / 测试 / 生产配置分开导入),切换环境只需替换配置文件。
二、spring ioc(控制反转):注解、创建java对象
cpp
<context:component-scan base-package="com"/><!--扫描包:作用是自动扫描包,批量生成 Bean-->
php
@Service
public class Dog{
}
等价:
markup
<bean id="cat" class="com.Dog">
<property name="age" value="20"/>
..................
</bean>
spring衍生注解
Component组件等同于
@Component 通用组件注解
@Service、@Controller、@Repository 都是 @Component 的派生注解,统称分层组件
4个注解功能相同,将java类注册到spring ioc容器中中,装配成【bean】
优点:
开发高效、简洁
@Service/@Autowired一行注解搞定,不用大量 xml 标签,代码量大幅减少
可读性强:
打开类直接看到注入的依赖,不用切换配置文件,可读性强
@Controller/@Service/@Repository区分三层架构,代码分层一目了然。
总结:xml配置方式和注解方式两种开发方式各有千秋,不同的项目和场景使用效果业截然不同