首先,Spring xml配置文件,扫描指定包下面的注解,使注解生效:
在对应包下面建实体类,加入@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;}
}
@Component有几个衍生注解,可以自动导入bean,不过分层的注解会使代码整体逻辑更加清晰
提供MVC三层架构的直接扫描方法注解,具体如下:
service层:
@Service
public class UserService {
}
dao层:
@Repository
public class UserDao {
}
controller层:
@Controller
public class UserController {
}
如果想要对某个类指定特定的设计模式,可以直接使用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;}
}
通过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 {@Beanpublic 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类的内容我们现用现查即可