扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
基于注解的装配方式
创新互联公司是专业的佳木斯网站建设公司,佳木斯接单;提供网站建设、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行佳木斯网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!在Spring中,使用XML配置文件可以实现Bean的装配工作,但在实际开发中如果Bean的数量过多,导致XML配置文件过于臃肿,给后期维护和升级带来一定的困难。为解决此问题,Spring提供了注解,通过注解也可以实现Bean的装配。
Spring常用注解:
注解 | 描述 |
---|---|
@Component | 指定一个普通的Bean,可以作用在任何层次 |
@Controller | 指定一个控制器组件Bean,用于将控制层的类标识为Spring中的Bean,功能上等同于@Component |
@Service | 指定一个业务逻辑组件Bean,用于将业务逻辑层的类标识为Spring中的Bean,功能上等同于@Component |
@Repository | 指定一个数据访问组件Bean,用于将数据访问层的类标识为Spring中的Bean,功能上等同于@Component |
@Scope | 指定Bean实例的作用域 |
@Value | 指定Bean实例的注入值 |
@Autowired | 指定要自动装配的对象 |
@Resource | 指定要注入的对象 |
@Qualifier | 指定要自动装配的对象名称,通常与@Autowired联合使用 |
@PostConstruct | 指定Bean实例完成初始化后调用的方法 |
@PreDestroy | 指定Bean实例销毁前调用的方法 |
注解装配示例:
第一步: 在IDEA中创建新的Maven项目,然后在pom.xml文件中加载需要使用到的Spring四个基础包(spring-core-5.2.8.RELEASE.jar、spring-beans-5.2.8.RELEASE.jar、spring-context-5.2.8.RELEASE.jar、spring-expression-5.2.8.RELEASE.jar)以及Spring的一个依赖包(commons-logging-1.2.jar),除此之外,还要导入spring-aop-5.2.8.RELEASE.jar依赖包:
org.springframework spring-aop5.2.8.RELEASE 复制代码
第二步: 创建applicationContext.xml,在该文件中引入Context约束并启动Bean的自动扫描功能(扫描出包下所有的类,进行注解解析)
复制代码
第三步: 定义实体类,新建entity包,在entity包下创建User实体类
@Component("student")
@Scope("singleton")
public class User{
@Value("2020001234")
private int stuId;
@Value("何小幸")
private Spring name;
//省略getter、setter和toString()
}
复制代码
第四步: 定义dao层,创建StudentDao接口作为数据访问层接口,并在StudentDao接口中声明save()方法,用于查询Student实体的对象信息
package com.hexiaoxing.dao
public interface StudentDao{
public void save();
}
复制代码
第五步: 创建StudenDaoImpl作为StudenDao的实现类,并在StudenDaoImpl类中实现StudentDao接口中的save()方法
@Repository("studentDao")
public class UserDaoImpl implements StudentDao{
public void save(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Student student = (Student)applicationContext.getBean("student");
System.out.println(student);
System.out.println("执行UserDaoImpl.save()");
}
}
复制代码
第六步: 定义service层,创建StudentService接口作为业务逻辑层接口,并在StudentService接口中定义save()方法
package com.hexiaoxing.service
public interface StudentService{
public void save();
}
复制代码
第七步: 定义service层,创建StudentServiceImpl作为StudentService的实现类,并在StudentServiceImpl类中实现StudentService接口中的save()方法
@Service("studentService")
public class StudentServiceImpl implements StudentService{
//使用@Resource注解注入StudentDao
@Resource(name="studentDao")
private StudentDao studentDao;
public void save(){
this.studentDao.save();
System.out.println("执行StudentServiceImpl.save()");
}
}
复制代码
第八步: 定义controller层,创建StudentController类作为控制层
@Controller
public class StudentController{
//使用@Resource注解注入StudentDao
@Resource(name="studentDao")
private StudentService studentService;
public void save(){
this.studentService.save();
System.out.println("执行StudentController.save()");
}
}
复制代码
到目前,我们定义了student类,在dao层定义并实现了save()接口方法,方法中获取了student对象,在service中也定义了save来调用dao层的save,就这样,controller->service->dao三层,分别调用上一层的save方法
第九步: 定义测试类,在类中通过Spring容器加载配置文件并获取UserController实例,然后调用实例中的save()方法,查看结果
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流