Spring中使用注解与配置文件的入门基础
Spring中使用注解与配置文件的入门基础
一、Spring中使用纯注解进行开发
步骤一:
创建一个maven项目,并且在pom.xml文件中导入以下关于Spring的maven坐标:
复制 <dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.20</version>
</dependency>
</dependencies>
步骤二:
创建一个SpringConfig配置类,并且用@Configuration与@ComponentScan注解搭配来完成。
@Configuration:作用于声明一个类为配置类,用于取代”bean.xml“的spring的xml配置文件注册bean对象。AnnotationApplicationContext(有@Configuration 注解的类.class)
@ComponentScan:用于指定 spring 在初始化容器时要扫描的包。作用和在 spring 的 xml 配置文件中的:
<context:component-scan base-package=“com.itheima”/>是一样的。
属性basePackages用于指定要扫描的包。和该注解中的 value 属性作用一样。
复制package com.zhicheng.lq.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan(basePackages ={"com.zhicheng.lq"})
public class SpringConfig {
}
步骤三:
分别创建UserDao、UserService的接口类与实现类,并且加上对应的注解,为了能够使SpringConfig配置类能够管理到该类。
-
在 Service 层上,添加注解时,使用 @Service
-
在 Dao 层,添加注解时,使用 @Repository
-
在 Controller 层,添加注解时,使用 @Controller
-
在其他组件上添加注解时,使用 @Componen
UserDao接口类:
复制package com.zhicheng.lq.dao;
public interface UserDao {
public void save();
public void delete(Integer id);
}
UserDaoImp实现类:
复制package com.zhicheng.lq.dao.Imp;
import com.zhicheng.lq.dao.UserDao;
import org.springframework.stereotype.Repository;
@Repository
public class UserDaoImp implements UserDao {
public void save() {
System.out.println("保存成功!");
}
public void delete(Integer id) {
System.out.println("id为"+id+"的数据删除成功!");
}
}
UserService接口类:
复制package com.zhicheng.lq.service;
public interface UserService {
public void save();
public void delete(Integer id);
}
UserServiceImp实现类:
复制package com.zhicheng.lq.service.Imp;
import com.zhicheng.lq.dao.UserDao;
import com.zhicheng.lq.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service(value="saveService")
public class UserServiceImp implements UserService {
@Autowired
UserDao userDao;
public void save() {
userDao.save();
}
public void delete(Integer id) {
userDao.delete(1);
}
}
步骤四:
创建测试类Test对该功能进行测试:
复制package com.zhicheng.lq;
import com.zhicheng.lq.config.SpringConfig;
import com.zhicheng.lq.service.Imp.UserServiceImp;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Test {
public static void main(String[] args) {
ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfig.class);
UserServiceImp saveService = ac.getBean("saveService", UserServiceImp.class);
saveService.save();
saveService.delete(1);
}
}
结果如下:
二、Spring中使用xml配置文件进行开发
步骤一:
如纯注解开发的步骤一相同步骤
步骤二:
在资源目录resources下创建创建spring02.xml配置文件
复制<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!--Spring组件扫描-->
<context:component-scan base-package="com.zhicheng.lq"></context:component-scan>
</beans>
步骤三:
创建实体类User
复制package com.zhicheng.lq.pojo;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
//prototype-原型模式 (副本)
//(默认)singleton-单例模式
@Scope(value = "prototype")
public class User {
private Integer id=1;
private String uname="zhangsan";
private String upass="333";
public User() {
}
public User(Integer id, String uname, String upass) {
this.id = id;
this.uname = uname;
this.upass = upass;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", uname='" + uname + '\'' +
", upass='" + upass + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpass() {
return upass;
}
public void setUpass(String upass) {
this.upass = upass;
}
}
步骤四:
创建IUserDao、IUserService的接口类并且创建他们的实现类IUserDaoImp、UserServiceImp并且添加相对应注解。
IUserDao接口类
复制package com.zhicheng.lq.Dao;
public interface IUserDao {
public void save();
}
IUserDaoImp实现类
复制package com.zhicheng.lq.Dao;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
@Repository
public class IUserDaoImp implements IUserDao{
@Override
public void save() {
System.out.println("这是UserDao实现类!");
}
}
IUserService接口类
复制package com.zhicheng.lq.Service;
public interface IUserService {
public void save();
}
UserServiceImp实现类
复制package com.zhicheng.lq.Service;
import com.zhicheng.lq.Dao.IUserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImp implements IUserService{
@Autowired
IUserDao userDao;
@Override
public void save() {
System.out.println("这是UserService实现类!");
userDao.save();
}
}
步骤五:
编写Test测试类
复制package com.zhicheng.lq.test;
import com.zhicheng.lq.Service.IUserService;
import com.zhicheng.lq.pojo.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Tset {
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("spring01.xml");
//从Spring容器中获取对象
User user= context.getBean(User.class);
System.out.println(user);
User user2=context.getBean(User.class);
System.out.println(user2);
// user 和 user2 到底是不是一个对象?
System.out.println(user==user2);
IUserService bean = context.getBean(IUserService.class);
bean.save();
}
}
结果如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步