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. 两种访问接口的方式(get和post)

    跨机器.跨语言的远程访问形式一共有三种:scoket发送数据包.http发送请求.rmi远程连接: http发送请求方式:分为post和get两种方式 importjava.io.IOExceptio ...

  2. LightGBM和XGBoost的区别?

    首先声明,LightGBM是针对大规模数据(样本量多,特征多)时,对XGBoost算法进行了一些优化,使得速度有大幅度提高,但由于优化方法得当,而精度没有减少很多或者变化不大,理论上还是一个以精度换速 ...

  3. 透过微软研究院在“数据中心网络”的重大进展看SIGCOMM 2013

    2013" title="透过微软研究院在"数据中心网络"的重大进展看SIGCOMM 2013"> 编者按:于8月12日至16日在香港举行的SI ...

  4. Helvetic Coding Contest 2019 差A3 C3 D2 X1 X2

    Helvetic Coding Contest 2019 A2 题意:给一个长度为 n 的01序列 y.认为 k 合法当且仅当存在一个长度为 n 的01序列 x,使得 x 异或 x 循环右移 k 位的 ...

  5. bootstrap的button按钮点击之后会有蓝色边框怎么解决?

    .btn:focus,.btn:active:focus, .btn.active:focus,.btn.focus, .btn:active.focus,.btn.active.focus { ou ...

  6. BZOJ 2318: Spoj4060 game with probability Problem (概率dp)(博弈论)

    2318: Spoj4060 game with probability Problem Description Alice和Bob在玩一个游戏.有n个石子在这里,Alice和Bob轮流投掷硬币,如果 ...

  7. Part-Linux-2

    1.cgi #1.创建cgi-bin目录#2.创建hi.json -> {"hi":"hello"}#3.python2 -m CGIHTTPServer ...

  8. [LC] 139. Word Break

    Given a non-empty string s and a dictionary wordDict containing a list of non-empty words, determine ...

  9. python——删除列表中的元素

    在python中,删除列表元素的方法有三种,分别为remove(),del(),pop()函数 (1)remove() >>> name = ['小明','小华','小红','小李' ...

  10. deeplearning.ai 人工智能行业大师访谈

    Geoffrey Hinton 1. 怀揣着对大脑如何存储记忆的好奇,Hinton本科最开始学习生物学和物理学,然后放弃,转而学习哲学:然后觉得哲学也不靠谱,转而学习心理学:然后觉得心理学在解释大脑运 ...