• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Y-wee
博客园    首页    新随笔    联系   管理     

spring纯注解案例

spring纯注解案例

我们发现,之所以我们现在离不开xml配置文件,是因为我们有一句很关键的配置:

<!-- 告知spring框架在,读取配置文件,创建容器时,扫描注解,依据注解创建对象,并存入容器中 -->
<context:component-scan base-package=**"com.itheima"**></context:component-scan>

如果他要也能用注解配置,那么我们就可以脱离xml文件了。

1、准备jar包

  • 基于maven项目
 <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.6.RELEASE</version>
    </dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.2.6.RELEASE</version>
</dependency>

2、编写实体类

package com.yl.bean;

import java.io.Serializable;

/**
 * 用户实体类
 */
public class User implements Serializable {
    private Integer id;
    private String username;
    private String password;

    public User() {
    }

    public User(Integer id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

3、编写业务层

  • 业务层接口
package com.yl.service;

/**
 * 用户业务层接口
 */
public interface IUserService {

    /**
     * 查询用户
     */
    public void queryUser();

}

  • 业务层接口实现类
package com.yl.service.impl;

import com.yl.dao.IUserDao;
import com.yl.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * 用户业务层接口实现类
 */
@Service("userService")//使用注解创建业务层bean对象
public class IUserServiceImpl implements IUserService {
    @Resource(name = "userDao")//使用注解注入指定bean对象
    private IUserDao iUserDao;//用户持久层对象

    /**
     * 查询用户
     */
    @Override
    public void queryUser() {
        iUserDao.queryUser();
    }
}

4、编写持久层

  • 持久层接口
package com.yl.dao;

/**
 * 用户持久层接口
 */
public interface IUserDao {

    /**
     * 查询用户
     */
    public void queryUser();

}
  • 持久层接口实现类
package com.yl.dao.impl;

import com.yl.dao.IUserDao;
import org.springframework.stereotype.Repository;

/**
 * 用户持久层接口实现类
 */
@Repository("userDao")//使用注解创建持久层bean对象
public class IUserDaoImpl implements IUserDao {

    /**
     * 查询用户
     */
    @Override
    public void queryUser() {
        System.out.println("查询成功");
    }
}

5、配置类

package com.yl.cfg;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

/**
 * spring配置类
 */
@Configuration//指定当前类为spring的配置类
@ComponentScan(basePackages = "com.yl")//配置要扫描的包
public class SpringCfg {

}

6、模拟表现层(测试)

package com.yl.ui;

import com.yl.cfg.SpringCfg;
import com.yl.service.IUserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 表现层
 */
public class UI {

    public static void main(String[] args) {
        //1.获取容器
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringCfg.class);
        //2.根据id获取对象
        IUserService userService = (IUserService) applicationContext.getBean("userService");
        //查询用户
        userService.queryUser();
    }

}

7、@Configuration注解说明

  • 作用:用于指定当前类是一个spring配置类,当创建容器时会从该类上加载注解。获取容器时需要使用AnnotationApplicationContext(有@Configuration注解的类.class)。
  • 属性
    • value:用于指定配置类的字节码

8、@ComponentScan注解说明

  • 作用:用于指定spring在初始化容器时要扫描的包。作用和在spring的xml配置文件中的:

    <context:component-scan base-package="com.itheima"/>是一样的。

  • 属性

    • basePackages:用于指定要扫描的包。和该注解中的value属性作用一样。
记得快乐
posted @ 2020-10-15 11:03  Y-wee  阅读(175)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3