马上2023年了,你还不会使用Spring注解开发吗?
1.导入bean
首先,Spring xml配置文件,扫描指定包下面的注解,使注解生效:
<context:component-scan base-package="top.imustctf.pojo"/>
<!-- 导入注解的支持 -->
<context:annotation-config/>
在对应包下面建实体类,加入@Component
注解,可以自动导入bean
@Component
public class Xiaoqian {
public String name = "小钱";
}
现在来测试一下效果吧:
@Test
public void test() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Xiaoqian xiaoqian = context.getBean("xiaoqian", Xiaoqian.class);
System.out.println(xiaoqian.name); // 小钱
}
导入bean的同时注入属性:
要想导入bean的同时注入属性,在set方法或者属性上加入@Value
注解即可:
@Component
public class Xiaoqian {
public String name;
public String getName() {
return name;
}
@Value("小钱")
public void setName(String name) {
this.name = name;
}
}
2.衍生注解
@Component
有几个衍生注解,可以自动导入bean,不过分层的注解会使代码整体逻辑更加清晰
提供MVC三层架构的直接扫描方法注解,具体如下:
service层:
@Service
public class UserService {
}
dao层:
@Repository
public class UserDao {
}
controller层:
@Controller
public class UserController {
}
3.作用域,设计模式注解
如果想要对某个类指定特定的设计模式,可以直接使用Spring@Scope
注解实现,例如,我们想要指定该类实现一个单例模式:
@Component
@Scope("singleton")
public class Xiaoqian {
public String name;
public String getName() {
return name;
}
@Value("小钱")
public void setName(String name) {
this.name = name;
}
}
4.XML - JAVA的完全转化
通过Spring的注解驱动类,我们可以完全的不使用XML文件进行Spring项目开发
以下是一个实例:
先定义一个熟悉的pojo类:(使用注解将此pojo类注册到Spring容器中)
@Component
@Scope("singleton")
public class Xiaoqian {
public String name;
public String getName() {
return name;
}
@Value("小钱")
public void setName(String name) {
this.name = name;
}
}
开发注解驱动类:(使用@Configuration
注解标注)
待托管的类使用@Bean
标注,这个方法的名字相当于原来bean标签中的ID,方法的返回值相当于class
@Configuration
public class DaheConfig {
@Bean
public Xiaoqian getXiaoqian() {
return new Xiaoqian();
}
}
现在来愉快的进行测试吧:
@Test
public void test() {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(DaheConfig.class);
Xiaoqian getXiaoqian = (Xiaoqian) context.getBean("getXiaoqian");
System.out.println(getXiaoqian.getName()); // 小钱
}
Spring的世界还存在很多的注解,具体可以参见Spring官方文档,这些API类的内容我们现用现查即可