【Spring】学习笔记006--Spring注解开发
Spring 4.x之后,如果需要使用注解进行开发,需要先导入aop包

然后加入context约束

接着打开注解和注解扫描(domain为博主的实体类包名)
<!--开启注解--> <context:annotation-config/> <!--开启注解扫描包,将会自动扫描这个包下的注解--> <context:component-scan base-package="com.aircl.domain"/>
1.bean
使用注解注册bean需要使用到@Component,它相当于我们之前的
<bean id="userBean" class="com.aircl.domain.User"/>
具体如下
//@Component 相当于<bean id="userBean" class="com.aircl.domain.User"/> @Component(value = "userBean") public class User implements Serializable { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User{" + "name='" + name + '\'' + '}'; } }
2.属性如何注入
如果我们需要为基本属性设置默认值,可以使用@Value
//@Component 相当于<bean id="userBean" class="com.aircl.domain.User"/> @Component(value = "userBean") public class User implements Serializable { @Value("aircl") private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User{" + "name='" + name + '\'' + '}'; } }
而对于复杂属性来说,xml是更好的方式,注入方法参考之前的博客:https://www.cnblogs.com/AirCL/p/14359269.html
3.衍生的注解
@Component有几个衍生注解,我们在web开发中,会按照mvc三层架构分层!
- dao [@Repository]
- service [@Service]
- controller [@Controller]
这四个注解功能都是一样的, 都是代表将某个类注册到Spring中, 装配Bean
4.自动装配置
自动装配可参考前一个博客:https://www.cnblogs.com/AirCL/p/14372563.html
5.作用域
配置作用域可以使用@Scope标签,如下
//@Component 相当于<bean id="userBean" class="com.aircl.domain.User"/> @Component(value = "userBean") @Scope("prototype") public class User implements Serializable { @Value("aircl") private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User{" + "name='" + name + '\'' + '}'; } }
6.小结
xml与注解:
- xml更加万能,适用于任何场合,维护简单方便
- 注解不是自己类使用不了,维护相对复杂
xml与注解最佳使用方式:
- xml用来管理bean
- 注解只负责完成属性的注入,我们在使用的过程中,只需要注意一个问题:让注解生效,就需要开启注解的支持
<!--开启注解--> <context:annotation-config/> <!--开启注解扫描包,将会自动扫描这个包下的注解--> <context:component-scan base-package="com.aircl.domain"/>

浙公网安备 33010602011771号