1.使用xml配置文件

由Spring Framework本身决定,此处不详细说。

2.使用Java注解的配置

如果一个类使用了@Service,那么此类将自动注册成一个bean,不需要再在applicationContext.xml文件定义bean了,类似的还包括@Component、@Repository、@Controller等。然后需要在applicationContext.xml文件中加一行,作用是自动扫描base-package包下的注解:

<context:component-scan base-package="com.jl" />

BeanFactoryImpl.java

package com.stonegeek.service.impl;import com.stonegeek.service.BeanFactory;
import org.springframework.stereotype.Service;/*** Created with Intellij IDEA** @Author: jinlei* @Description:* @Date: 2021/9/1* @Time: 16:28**/
@Service("beanFactory")
public class BeanFactroyImpl implements BeanFactory {@Overridepublic void Beantest() {System.out.println("----------This is a 基于Java注解的bean!-----------");}
}

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:component-scan base-package="com.jl" /></beans>

TestBean.java

package com.stonegeek;import com.stonegeek.service.BeanFactory;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** Created with Intellij IDEA** @Author: jinlei* @Description:* @Date: 2021/9/1* @Time: 16:44**/
public class TestBean {@Testpublic void test(){ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml");BeanFactory beanFactory=(BeanFactory) ctx.getBean("beanFactory");beanFactory.Beantest();  //This is a 基于java注解的bean!}
}

3.使用Java类的配置(掌握)

第一步:先创建一个User实体类

package com.jl.demo;import java.io.Serializable;/*** Created with Intellij IDEA** @Author: jinlei* @Description:* @Date: 2021/9/1* @Time: 15:44**/
public class User implements Serializable{private static final long serialVersionUID = 1L;private String username;private String password;private int age;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;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User [username=" + username + ", password=" + password + ", age=" + age + "]";}}

第二步:创建一个数据层

package com.jl.demo;import java.util.ArrayList;
import java.util.List;/*** Created with Intellij IDEA** @Author: jinlei* @Description:* @Date: 2021/9/1* @Time: 15:55**/
public class UserDao {public List<User> queryUserList() {ArrayList<User> list = new ArrayList<User>();// 模拟数据库数据for (int i = 0; i < 10; i++) {User user = new User();user.setUsername("username" + i);user.setPassword("password" + i);user.setAge(1 + i);list.add(user);}return list;}}

第三步:创建业务层

package com.jl.demo;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** Created with Intellij IDEA** @Author: jinlei* @Description:业务层* @Date: 2021/9/1* @Time: 16:23**/
@Service
public class UserService {@Autowiredprivate UserDao userDao;public List<User> queryUserList() {// 调用Dao的查询用户方法进行查询return userDao.queryUserList();}
}

第五步:配置文件

package com.jl.demo;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;/*** Created with Intellij IDEA** @Author: jinlei* @Description:配置文件类* @Date: 2021/9/1* @Time: 16:33**/@Configuration // 声明为一个配置文件
@ComponentScan(basePackages="com.jl.demo") //扫描包
public class SpringConfig {@Bean  // 通过这个注解来标明这是一个Bean对象,相当于xml文件中的<bean>public UserDao getUserDao() {return new UserDao();}}

前面的四步相信大家已经很熟悉了,可能就是这步大家之前要是没接触可能瞬间跟我一样,有点看不太明白,在整个项目里面找xml配置文件,结果发现却根本没有配置文件!

简单说一下这三个注解的作用:

@Configuration:这个注解其实就是把我们当前的这个类,声明为一个配置文件,它就相当于我们的xml配置文件,跟它的作用是一样的,只不过用类的方式来进行展现;

@ComponentScan(basePackages=“包路径”):这个注解其实就是去扫描我们的包路径,对我们需要扫描的包进行扫描,如果需要扫描多个包,之间用逗号隔开即可;

@Bean:这个注解其实更好理解,它就相当于xml中的,我们之前通过标签将它注入到容器中,现在只需要在你所需要注入的资源上面加上@Bean注解,就可以注入到Spring容器中;

第六步:测试

package com.jl.demo;import java.util.List;import org.springframework.context.annotation.AnnotationConfigApplicationContext;/*** Created with Intellij IDEA** @Author: jinlei* @Description:测试方法* @Date: 2021/9/1* @Time: 16:43**/
public class Test {@SuppressWarnings("resource")public static void main(String[] args) {// 通过Java配置的方式实例化Spring容器AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);// 在Spring容器中获取Bean对象UserService userService = applicationContext.getBean(UserService.class);// 调用对象中的方法List<User> userList = userService.queryUserList();for (User user : userList) {System.out.println(user);}// 销毁容器applicationContext.destroy();}}

Spring中三种配置Bean的方式相关推荐

  1. (转)Spring的三种实例化Bean的方式

    http://blog.csdn.net/yerenyuan_pku/article/details/52832793 Spring提供了三种实例化Bean的方式. 使用类构造器实例化. <be ...

  2. zynq学习03 zynq中三种实现GPIO的方式

    http://m.blog.csdn.net/article/details?id=52123465 http://blog.chinaaet.com/songhuangong/p/43084 本文介 ...

  3. Python中三种表示NA的方式

    Python中三种表示NA的方式 # -*- coding: utf-8 -*- import numpy as np import pandas as pd# data_frame = np.loa ...

  4. android项目中有哪几种依赖关系,Android Studio项目中三种依赖的添加方式

    通常一个AS项目中的依赖关系有三种,一是本地依赖(主要是对本地的jar包),二是模块依赖,三是远程依赖:添加这些依赖的目的在于上我们想要在项目的某一个模块中使用其中的功能,比如okttp这个网络框架库 ...

  5. java go md5_Go语言中三种不同md5计算方式的性能比较

    前言 本文主要介绍的是三种不同的 md5 计算方式,其实区别是读文件的不同,也就是磁盘 I/O, 所以也可以举一反三用在网络 I/O 上.下面来一起看看吧. ReadFile 先看第一种, 简单粗暴: ...

  6. python 中三种定义类的方式

    在Python中方,有三种定义类的方法: 常规方式.@classmethod修饰方式.@staticmethod修饰方式 class类定义 In [1]: class A:...: def commo ...

  7. Spring中3种实例Bean的方法及设置Bean的别名

    目录 基本概念 代码及演示 对Bean的感悟 基本概念 学习使用Spring实例化Bean 1. 通过构造方法实例化Bean: 2. 通过静态方法实例化Bean: 3. 通过实例方法实例化Bean S ...

  8. 安卓:Android项目中三种依赖的添加方式

    添加本地依赖 首先将所需的 jar 或者 aar 包放在libs文件夹下. 方式1(适合jar) 右击jar包,选择Add As Library,最后sync. 方式2 (适合jar 和 aar) 在 ...

  9. Spring Bean的三种配置方式

    目录 一.传统的XML配置方式 二.基于java注解的配置 三.基于类的Java Config 正文 Spring Bean有三种配置方式: 传统的XML配置方式 基于注解的配置 基于类的Java C ...

最新文章

  1. vue 报错unknown custom element解决方法
  2. Delphi 2010 新增功能之: IOUtils 单元(4): TDirectory.GetDirectories
  3. vs2005 + ASP.NET 页面布局应注意问题及方法步骤
  4. yolo 标注转VOC格式(标注转换器)
  5. C++类特殊成员函数
  6. gradle 构建包含源码配置
  7. 负债十五万左右,信用卡十万,网贷四五万,怎么上岸?
  8. Qt工作笔记-在QTreeView上实现模型数据的拖拽
  9. 蔚来资本宣布完成约4亿美元二期基金募集
  10. Android ADB 用法
  11. sqlalchemy mysql教程_SQLAlchemy 教程 —— 基础入门篇
  12. 纽约的雪--纽约公立小学的故事
  13. c51单片机音乐盒c语言,毕业论文-基于AT89C51单片机的音乐盒设计(C程序).doc
  14. SQL教程数据库视频数据分析教程Sql Server|MySQL|Oracle视频教程
  15. AUTOCAD——标注打断
  16. 静态淘宝热卖界面(纯CSS)
  17. ADB 自动补全 及 offline 解决方法
  18. uniapp连接本地服务器请求超时
  19. 【180609】剑侠情缘_整套源码+地图编辑器(单机学习例子)
  20. 计算机软件维护基本知识,电脑硬件基础维护常识大全

热门文章

  1. 数据结构与算法-什么是数据结构,什么是数据,什么是抽象数据类型
  2. python-字典-定义-增删改取
  3. jquery-滚轮事件与函数节流-案例整屏滚动 -等待整理
  4. mysql定时发送慢日志到邮件
  5. pdfjs viewer 开发小结
  6. eclipse黑色主题
  7. 用python做测试实现高性能测试工具(4)—系统架构
  8. C#枚举类型的常用操作总结
  9. Serverless 实战 —— 阿里云函数计算配合SpringBoot项目
  10. 如何在Ubuntu 16.04上使用MySQL 5.6配置Galera集群