Spring 5.x 应用零配置开发

3.1 注解

3.1.1 声明Bean注解

  1. @Component: 组件 没有明确规定其角色
  2. @Service: 业务逻辑
  3. @Repository: dao
  4. @Controller: 控制器声明

3.1.2 注入Bean注解

  1. @AutoWired: Spring 官方提供注解
  2. @Inject : JSR-330提供注解
  3. @Resource:JsR250

一般声明在属性上
3.1.3 配置与获取Bean注解

  1. @Configuration: 作用于类上,将当前类声明为一个配置类,相当于一个xml配置文件
  2. @ComponentScan: 自动扫描置顶包下标注有@Respository @Service @ Controller
  3. @Component: 注解的类 IOC实例化和维护
  4. @Bean: 作用于方法上,相当于xml文件中的<Bean> 生命当前方法返回一个bean 调用别人的类交给ioc时使用
  5. @Value: 获取properties 文件制定key value

实例1:IOC中Bean的实例化与获取

  1. 创建Spring普通工程
    添加依赖
  1. <dependency>
  2. <groupId>org.springframework</groupId>
  3. <artifactId>spring-context</artifactId>
  4. <version>5.3.1</version>
  5. </dependency>
  1. dao层
  1. package org.angyi.dao;
  2. import org.springframework.stereotype.Repository;
  3. @Repository
  4. public class UserDao {
  5. public void test(){
  6. System.out.println("UserDao....");
  7. }
  8. }

3 service层

  1. package org.angyi.service;
  2. import org.angyi.dao.UserDao;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Service;
  5. @Service
  6. public class UserService {
  7. @Autowired
  8. private UserDao userDao;
  9. public void test(){
  10. System.out.println("UserService...");
  11. userDao.test();
  12. }
  13. }
  1. config配置类
  1. package org.angyi.config;
  2. import org.springframework.context.annotation.ComponentScan;
  3. import org.springframework.context.annotation.Configuration;
  4. @Configuration //生命配置类 相当于xml文件
  5. @ComponentScan("org.angyi") //设置扫描包范围
  6. public class IocConfig {
  7. }
  1. 测试类
  1. package org.angyi;
  2. import org.angyi.config.IocConfig;
  3. import org.angyi.service.UserService;
  4. import org.springframework.context.annotation.AnnotationConfigApplicationContext;
  5. import org.springframework.context.annotation.AnnotationConfigApplicationContextExtensionsKt;
  6. /**
  7. * Hello world!
  8. *
  9. */
  10. public class App
  11. {
  12. public static void main( String[] args ){
  13. // 基于java配置类得到上下文环境
  14. AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(IocConfig.class);
  15. // 获取需要实例化的bean对象
  16. UserService userService = ac.getBean(UserService.class);
  17. userService.test();
  18. }
  19. }