Spring Bean定义的三种方式

本文内容纲要:

- 一、基于XML的配置

- 二、基于注解的配置

- 三、基于Java类的配置

<!--Spring容器启动配置(web.xml文件)-->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:spring/applicationContext.xml</param-value>

</context-param>

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

一、基于XML的配置

适用场景:

  • Bean实现类来自第三方类库,如:DataSource等

  • 需要命名空间配置,如:context,aop,mvc等

    //导入其他配置文件Bean的定义

      

二、基于注解的配置

适用场景:

  • 项目中自己开发使用的类,如controller、service、dao等

步骤如下:

1. 在applicationContext.xml配置扫描包路径

<context:component-scan base-package="com.lovepi.spring"> 

  <context:include-filter type="regex" expression="com.lovepi.spring.*"/>   //包含的目标类

  <context:exclude-filter type="aspectj" expression="cn.lovepi..*Controller+"/>   //排除的目标类

</context:component-scan>

注:context:component-scan/ 其实已经包含了 context:annotation-config/的功能

2. 使用注解声明bean

Spring提供了四个注解,这些注解的作用与上面的XML定义bean效果一致,在于将组件交给Spring容器管理。组件的名称默认是类名(首字母变小写),可以自己修改:

  • @Component:当对组件的层次难以定位的时候使用这个注解

  • @Controller:表示控制层的组件

  • @Service:表示业务逻辑层的组件

  • @Repository:表示数据访问层的组件

    @Service

    public class SysUserService {

    @Resource

    private SysUserMapper sysUserMapper;

    public int insertSelective(SysUser record){

    return sysUserMapper.insertSelective(record);

    }

    }

三、基于Java类的配置

适用场景:

  • 需要通过代码控制对象创建逻辑的场景
  • 实现零配置,消除xml配置文件

步骤如下:

  1. 使用@Configuration注解需要作为配置的类,表示该类将定义Bean的元数据

  2. 使用@Bean注解相应的方法,该方法名默认就是Bean的名称,该方法返回值就是Bean的对象。

  3. AnnotationConfigApplicationContext或子类进行加载基于java类的配置

    @Configuration

    public class BeansConfiguration {

    @Bean  

    public Student student(){

    Student student=new Student();

    student.setName("张三");

    student.setTeacher(teacher());

    return student;

    }

    @Bean

    public Teacher teacher(){

    Teacher teacher=new Teacher();

    teacher.setName("李四");

    return teacher;

    }

    }

    public class Main {

    public static void main(String args[]){  

    AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(BeansConfiguration.class);

    Student student = (Student) context.getBean("student");

    Teacher teacher = (Teacher) context.getBean("teacher");

    System.out.println("学生的姓名:" + student.getName() + "。老师是" + student.getTeacher().getName());

    System.out.println("老师的姓名:" + teacher.getName());

    }

    }

参考:https://blog.csdn.net/lzh657083979/article/details/78524489

本文内容总结:一、基于XML的配置,二、基于注解的配置,三、基于Java类的配置,

原文链接:https://www.cnblogs.com/wslook/p/9161560.html

以上是 Spring Bean定义的三种方式 的全部内容, 来源链接: utcz.com/z/362331.html

回到顶部