Fork me on GitHub

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();

    }
}

结果如下:

posted @ 2022-11-13 22:08  嘻瓜沁  阅读(235)  评论(0编辑  收藏  举报