• 吴裕雄天生自然SPRINGSpring IoC


    1.声明Bean的注解


    (1)@Component 该注解是一个泛化的概念,仅仅表示一个组件对象(Bean),可以作用在任何层次上,没有明确的角色。 (2)@Repository 该注解用于将数据访问层(DAO)的类标识为Bean,即注解数据访问层Bean,其功能与@Component()相同。 (3)@Service 该注解用于标注一个业务逻辑组件类(Service层),其功能与@Component()相同。 (4)@Controller 该注解用于标注一个控制器组件类(Spring MVC的Controller),其功能与@Component()相同。
    2.注入Bean的注解
    
       (1)@Autowired
        该注解可以对类成员变量、方法及构造方法进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除setter 和getter方法。默认按照Bean的类型进行装配。
       (2)@Resource
        该注解与@Autowired功能一样。区别在于,该注解默认是按照名称来装配注入的,只有当找不到与名称匹配的Bean才会按照类型来装配注入;而@Autowired默认按照Bean的类型进行装配,如果想按照名称来装配注入,则需要结合@Qualifier注解一起使用。
        @Resource注解有两个属性:name和type。name属性指定Bean实例名称,即按照名称来装配注入;type属性指定Bean类型,即按照Bean的类型进行装配。
       (3)@Qualifier
        该注解与@Autowired注解配合使用。当@Autowired注解需要按照名称来装配注入,则需要结合该注解一起使用,Bean的实例名称由@Qualifier注解的参数指定。
    1.使用Eclipse创建Web应用并导入JAR包
        2.创建DAO层
        3.创建Service层
        4.创建Controller层
        5.创建配置类
        6.创建测试类
        7.运行结果
    package annotation.dao;
    
    public interface TestDao {
        public void save();
    
    }
    package annotation.dao;
    
    import org.springframework.stereotype.Repository;
    
    @Repository("TestDaoImpl")
    public class TestDaoImpl implements TestDao{
        @Override
        public void save() {
            System.out.println("testDao save");
        }
    
    }
    package annotation.service;
    
    public interface TestService {
        public void save();
    
    }
    package annotation.service;
    
    import javax.annotation.Resource;
    import org.springframework.stereotype.Service;
    import annotation.dao.TestDao;
    
    @Service("TestSeviceImpl")
    public class TestSeviceImpl implements TestService{
        @Resource(name="TestDaoImpl")
        private TestDao testDao;
        @Override
        public void save() {
            testDao.save();
            System.out.println("testService save");
        }
    
    }
    package annotation.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import annotation.service.TestService;
    
    @Controller
    public class TestController {
        @Autowired
        private TestService testService;
        public void save() {
            testService.save();
            System.out.println("testController save");
        }
    
    }
    package annotation;
    
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    @ComponentScan("annotation")
    public class ConfigAnnotation {
    
    }
    package annotation;
    
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    import annotation.controller.TestController;
    
    
    public class TestAnnotation {
        public static void main(String[] args) {
            AnnotationConfigApplicationContext appCon = new AnnotationConfigApplicationContext(ConfigAnnotation.class);
            TestController tc = appCon.getBean(TestController.class);
            tc.save();
            appCon.close();
        }
    }

  • 相关阅读:
    Django 各个 app 存放在同一文件夹下
    Django 的登录验证装饰器
    001语言基础
    004 系列:元组,列表和字符串
    003数值类型
    002程序流程控制
    WPF事件
    C++中extern关键字的作用
    C/C++中extern关键字详解
    运算符重载,是成员函数还是友元函数
  • 原文地址:https://www.cnblogs.com/tszr/p/15309189.html
Copyright © 2020-2023  润新知