文章目录
使用注解开发
在spring4之后,使用注解开发,必须要保证aop
包的导入
使用注解需要导入contex
的约束
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
</beans>
1、Bean的实现
1、配置扫描哪些包下的注解
<!--指定要扫描的包,这个包下的注解就会生效-->
<context:component-scan base-package="com.zhu.pojo"/>
2、在指定包下编写类,增加注解
@Component("user")
// 相当于配置文件中 <bean id="user" class="当前注解的类"/>
public class User {
public String name = "ztb";
}
2、属性注入@value
使用注解注入属性
1、可以不用提供set方法,直接在属性名上添加@value(“值”)
@Component("user")
// 相当于配置文件中 <bean id="user" class="当前注解的类"/>
public class User {
@Value("张三")
// 相当于配置文件中 <property name="name" value="秦疆"/>
public String name;
}
2、如果提供了set方法,在set方法上添加@value(“值”);
@Component("user")
public class User {
public String name;
@Value("张三")
public void setName(String name) {
this.name = name;
}
}
3、衍生注解
@Component
有几个衍生注解,会按照web开发中,mvc架构中分层。
- dao (@Repository)
- service(@Service)
- controller(@Controller)
- 这四个注解的功能是一样的,都是代表将某个类注册到spring中,装配Bean
4、自动装配配置
- @Autowired : 自动装配通过类型。名字
自动装配无法通过一个注解【@Autowired】完成的时候,我们可以使用@Qualifier(value = “xxx”)去配置
- @Nullable : 字段标记了这个注解,说明该字段可以为空(null)
- @Resource : 自动装配通过名字。类型
5、作用域
@scope
- singleton:默认的,Spring会采用单例模式创建这个对象。关闭工厂 ,所有的对象都会销毁。
- prototype:多例模式。关闭工厂 ,所有的对象不会销毁。内部的垃圾回收机制会回收
//原型模式prototype,单例模式singleton
//scope("prototype")相当于<bean scope="prototype"></bean>
@Component
@scope("prototype")
public class User {
//相当于<property name="name" value="kuangshen"/>
@value("kuangshen")
public String name;
//也可以放在set方法上面
@value("kuangshen")
public void setName(String name) {
this.name = name;
}
}
6、小结
xml与注解:
- xml更加万能,维护简单,适用于任何场合
- 注解,不是自己的类使用不了,维护复杂
最佳实践:
- xml用来管理bean
- 注解只用来完成属性的注入
- 我们在使用的过程中,只需要注意一个问题:必须让注解生效,就需要要开启注解支持
<!-- 指定要扫描的包,这个包下的注解就会生效-->
<context:component-scan base-package="com.zhu"/> <context:annotation-config/>