Java程序员常用的@Component、@Repository、@Controller、@Service系列【案例demo3】

 

很多程序员通过在类上使用@Repository、@Component、@Service 和 @Constroller 注解,Spring会自动创建相应的 BeanDefinition 对象,并注册到 ApplicationContext 中。这些类就成了 Spring受管组件。这三个注解除了作用于不同软件层次的类,其使用方式与@Repository 是完全相同的。

处理类:org.springframework.context.annotation.ScannedGenericBeanDefinition

[if !supportLists]· [endif]项目包结构

F:.

├─java

│  └─com

│      └─example

│          └─demo3

│              │  Demo3Application.java

│              │

│              ├─controll

│              │      StuController.java

│              │

│              ├─dao

│              │      StuDao.java

│              │      StuDaoImp.java

│              │

│              ├─entity

│              │      Stu.java

│              │

│              └─server

│                      StuService.java

│                      StuServiceImp.java

└─resources

application.properties

project.text

[if !supportLists]· [endif]控制器角色StuController

package com.example.demo3.controll;

import org.springframework.stereotype.Controller;

@Controller

public class StuController {

}

[if !supportLists]· [endif]数据角色StuDao、StuDaoImp

package com.example.demo3.dao;

public interface StuDao {

}

package com.example.demo3.dao;

import org.springframework.stereotype.Repository;

@Repository

public class StuDaoImp implements StuDao{

}

[if !supportLists]· [endif]服务角色StuService、StuServiceImp

package com.example.demo3.server;

public interface StuService {

}

package com.example.demo3.server;

import org.springframework.stereotype.Service;

@Service

public class StuServiceImp implements StuService {

}

[if !supportLists]· [endif]其它组件角色Stu

package com.example.demo3.entity;

import org.springframework.stereotype.Component;

@Component

public class Stu {

String name;

public Stu(String name) {

this.name = name;

}

public Stu() {

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@Override

public String toString() {

return "Stu{" +

"name='" + name + '\'' +

'}';

}

}

[if !supportLists]· [endif]Demo3Application(启动程序)

package com.example.demo3;

import com.example.demo3.controll.StuController;

import com.example.demo3.dao.StuDao;

import com.example.demo3.entity.Stu;

import com.example.demo3.server.StuService;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication

public class Demo3Application {

public static void main(String[] args) {

ConfigurableApplicationContext context = SpringApplication.run(Demo3Application.class, args);

//@Component注册的组件,名称默认都是类名的首字母小写

//纯属于注解方式注册组件

//之所以能力扫描到这些包,因为注解@AutoConfigurationPackage的作用(但必须满足所有组件都在启动类所在包的平级或子集)

StuController stuController = context.getBean("stuController", StuController.class);

Stu stu = context.getBean("stu", Stu.class);

StuDao stuDaoImp = context.getBean("stuDaoImp", StuDao.class);

StuService stuServiceImp = context.getBean("stuServiceImp", StuService.class);

//打印都有地址

System.out.println(stuController);

System.out.println(stu);

System.out.println(stuDaoImp);

System.out.println(stuServiceImp);

context.close();

}

}

AnnotationConfigApplicationContext与ConfigurableApplicationContext的关系

总结:

1.上下文基本架构关系

2.ConfigurableApplicationContext:

3.ClassPathXmlApplicationContext:

4.AnnotationConfigApplicationContext:

Java程序员常用的@Component、@Repository、@Controller、@Service系列【案例demo3】的更多相关文章

  1. JAVA程序员常用英语

    JAVA程序员常用英语 干程序员这行实在是离不开英语,干程序员是一项很辛苦的工作,要成为一个高水平的程序员尤为艰难.这是因为计算机软件技术更新的速度越来越快,而这些技术大多来源于英语国家,我们在引进这 ...

  2. Java程序员常用工具类库

    有人说当你开始学习Java的时候,你就走上了一条不归路,在Java世界里,包罗万象,从J2SE,J2ME,J2EE三大平台,到J2EE中的13中核心技术,再到Java世界中万紫千红的Framework ...

  3. Java程序员常用工具集

    我发现很多人没办法高效地解决问题的关键原因是不熟悉工具,不熟悉工具也还罢了,甚至还不知道怎么去找工具,这个问题就大条了.我想列下我能想到的一个Java程序员会用到的常用工具. 一.编码工具 1.IDE ...

  4. JAVA程序员常用开发工具

    1.JDK (Java Development Kit)Java开发工具集 SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(JDK).开发人员和最终用户可以利 ...

  5. JAVA程序员常用软件类库下载地址整理

    IT行业是个发展更新特别快的领域,每个程序员在职业生涯中都会经历各类技术和工具的更新迭代. 俗话说:工欲善其事,必先利其器.本着独乐乐不如众乐乐的精神(其实是自己健忘)本人把经常要用到的软件工具官方下 ...

  6. java程序员常用的linux命令

    作为一个java后端开发者,在日常工作中肯定会有和linux打交道的时候.下面我整理了一些开发中可能需要用到的一些命令(写这篇随笔前,我也没有什么操作经验,主要防止自己忘记这些操作命令,以后有用到新的 ...

  7. java程序员常用的八个工具

    以下这8个工具,从代码构建到错误挤压,覆盖Java开发的全域.学习这些工具可以帮助你改善代码质量,成为一个更高效的Java开发人员. 1.Eclipse 尽管IntelliJ IDEA.NetBean ...

  8. Java程序员常用的Linux命令01——linux命令基础

    1.显示日期的命令date 显示日期: [root@localhost ~]# date 显示年月日: [root@localhost ~]# date '+%Y%m%d' 2.显示日历指令cal 显 ...

  9. Java程序员常用Linux性能分析命令

    性能分析 vmstat 虚拟内存统计 用法 Usage: vmstat [options] [delay [count]] Options: -a, --active active/inactive ...

随机推荐

  1. OpenSSL EVP_Digest系列函数的一个样例

    #include <stdio.h>     #include <openssl/evp.h>         main(int argc, char *argv[])     ...

  2. 用命令修改Oracle数据库密码

    1.改密码    (1).打开doc命令框键入:sqlplus /nolog     (2).输入:connect / as sysdba     (3).修改密码:alter user userNa ...

  3. Linux基础篇七:Linux的命令执行

    首选区分内置命令和外置命令: 内置命令:shell程序自带的命令,系统内核一启动就可以使用的命令 外置命令:在系统PATH变量路径下的命令 如何查看一个命令是内置命令还是外置命令: type -a c ...

  4. FIT AP和FAT AP的区别

    1.Fat模式是传统的WLAN组网方案,无线AP本身承担了认证终结.漫游切换.动态密钥产生等复杂功能,相对来说AP的功能较重,因此称为Fat  AP. 2.Fit模式是新兴的一种WLAN组网模式,其相 ...

  5. 吴裕雄--天生自然C语言开发:结构体

    struct tag { member-list member-list member-list ... } variable-list ; struct Books { ]; ]; ]; int b ...

  6. P2486 [SDOI2011]染色 区间合并+树链剖分(加深对线段树的理解)

    #include<bits/stdc++.h> using namespace std; ; struct node{ int l,r,cnt,lazy; node(,,,):l(l1), ...

  7. scala slick mysql utf8mb4 支持

    语言  scala sql包  slick 3.2.0 数据库  mysql https://stackoverflow.com/questions/36741141/scala-slick-jdbc ...

  8. Reveal详细安装教程

    Reveal的详细安装使用 标签: Reveal 工具 调试 iOS 一.终端的操作 首先最重要的一点,要先把Reveal软件放到Application中,否则路径是错的,后面的设置也就没有作用了 打 ...

  9. django框架基础-视图系统-长期维护

    ##################   什么是视图?     ####################### 视图: 1,一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受W ...

  10. 蓝桥杯-2016CC-卡片换位

    卡片换位 你玩过华容道的游戏吗?这是个类似的,但更简单的游戏.看下面 3 x 2 的格子 在其中放5张牌,其中A代表关羽,B代表张飞,* 代表士兵.还有一个格子是空着的. 你可以把一张牌移动到相邻的空 ...