@Configuration 配置类 与 @Bean 添加组件

本文导读

  • 本文承接《@ImportResource 导入Spring 配置文件》
  • 已经知道可以使用“@ImportResource”来导入Spring 配置文件,比如以前经常在beans.xml配置的各种定时器、自己写的类以及各种第三方如MyBatis与Hibernate的类实例等,但Spring官方并不建议这么做,因为现在主流是面向全注解编程。
  • 所以现在就用@Configuration(配置类)来替代以前的Spring配置文件;用@Bean来替代Spring配置文件中<bean>标签,来给容器中添加组件

需 求

  • 仍然以《@ImportResource 导入Spring 配置文件》中的例子进行二次开发,需求同理
  • 从浏览器访问UserController中的deleteUser()方法,然后调用UserService的deleteUser()方法模拟删除用户
  • UserController使用@Controller注解,UserService不再使用@Service注解,也不在通过beans.xml进行配置,而是使用@Configuration与@Bean进行配置与添加
  • User实体作为被删除的用户,采用@Value注入初始值,模拟被删除的用户

@Configuration 配置类 与 @Bean 添加组件

MyAppConfig

package com.lct.config;

import com.lct.service.UserService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Created by Administrator on 2018/7/12 0012.
 *
 * @Configuration 指明当前类是一个配置类;就是来替代之前的Spring配置文件,beans.xml
 * 配置类可以有多个
 */
@Configuration
public class MyAppConfig {

    /**
     * 相当于以前beans.xml中的:<bean id="userService" class="com.lct.service.UserService"/>
     * 将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名
     * @return
     */
    @Bean
    public UserService userService() {
        return new UserService();
    }
}

应用启动类

package com.lct;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;

/**
 * 应用启动类
 * 因为使用了@Configuration配置类,则之前的@ImportResource就不用了
 */
@SpringBootApplication
public class CocoApplication {

    public static void main(String[] args) {
        SpringApplication.run(CocoApplication.class, args);
    }
}

运行测试

@Configuration 配置类 与 @Bean 添加组件

@Configuration 配置类 与 @Bean 添加组件