Java程序员常用的@Component、@Repository、@Controller、@Service系列【案例demo3】
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】的更多相关文章
- JAVA程序员常用英语
JAVA程序员常用英语 干程序员这行实在是离不开英语,干程序员是一项很辛苦的工作,要成为一个高水平的程序员尤为艰难.这是因为计算机软件技术更新的速度越来越快,而这些技术大多来源于英语国家,我们在引进这 ...
- Java程序员常用工具类库
有人说当你开始学习Java的时候,你就走上了一条不归路,在Java世界里,包罗万象,从J2SE,J2ME,J2EE三大平台,到J2EE中的13中核心技术,再到Java世界中万紫千红的Framework ...
- Java程序员常用工具集
我发现很多人没办法高效地解决问题的关键原因是不熟悉工具,不熟悉工具也还罢了,甚至还不知道怎么去找工具,这个问题就大条了.我想列下我能想到的一个Java程序员会用到的常用工具. 一.编码工具 1.IDE ...
- JAVA程序员常用开发工具
1.JDK (Java Development Kit)Java开发工具集 SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(JDK).开发人员和最终用户可以利 ...
- JAVA程序员常用软件类库下载地址整理
IT行业是个发展更新特别快的领域,每个程序员在职业生涯中都会经历各类技术和工具的更新迭代. 俗话说:工欲善其事,必先利其器.本着独乐乐不如众乐乐的精神(其实是自己健忘)本人把经常要用到的软件工具官方下 ...
- java程序员常用的linux命令
作为一个java后端开发者,在日常工作中肯定会有和linux打交道的时候.下面我整理了一些开发中可能需要用到的一些命令(写这篇随笔前,我也没有什么操作经验,主要防止自己忘记这些操作命令,以后有用到新的 ...
- java程序员常用的八个工具
以下这8个工具,从代码构建到错误挤压,覆盖Java开发的全域.学习这些工具可以帮助你改善代码质量,成为一个更高效的Java开发人员. 1.Eclipse 尽管IntelliJ IDEA.NetBean ...
- Java程序员常用的Linux命令01——linux命令基础
1.显示日期的命令date 显示日期: [root@localhost ~]# date 显示年月日: [root@localhost ~]# date '+%Y%m%d' 2.显示日历指令cal 显 ...
- Java程序员常用Linux性能分析命令
性能分析 vmstat 虚拟内存统计 用法 Usage: vmstat [options] [delay [count]] Options: -a, --active active/inactive ...
随机推荐
- iOS之input file调用相册控制器消失跳转到登陆页
最近在做一个app要用到H5,其中有一个需求是要点击H5的的控件弹出系统相册,通过在H5的input file 中定义<input type="file" class=&qu ...
- element ui 自定义异步验证
之前提到过,axios是一个异步请求,但是很多时候我们都需要同步请求,比如在element的表单验证中需要验证一个用户名是否存在的时候,异步请求好像就不太好用了.前边博客中提到过,这种情况可以用es6 ...
- git命令简单使用
git config --global user.name 'sss' git config --global user.email 'huahua@163.com' cd d:/mywork git ...
- 吴裕雄--天生自然python机器学习:使用决策树预测隐形眼镜类型
解决策树如何预测患者需要佩戴的隐形眼镜类型.使用小数据 集,我们就可以利用决策树学到很多知识:眼科医生是如何判断患者需要佩戴的镜片类型:一旦 理解了决策树的工作原理,我们甚至也可以帮助人们判断需要佩戴 ...
- set|lambda|reduce
#!/usr/bin/python a=set([i for i in range(4,8)]) b=set([i for i in range(5,12)]) c= sorted(a & b ...
- Unable to preventDefault inside passive event listener due to target being treated as passive. See https://www.chromestatus.com/features/5093566007214080
解决办法: 两个方案:1.注册处理函数时,用如下方式,明确声明为不是被动的window.addEventListener('touchmove', func, { passive: false }) ...
- tomcat部署项目方式
三大部署方式1. Context描述文件部署通过独立的Context文件描述清楚项目的访问路径和地址,tomcat在启动的时候会解析这个Context文件,创建一个Context对象. Conte ...
- css - inline-block 盒子下的内容文字错位问题
参考资料: “display:block-inline形式的Span或Div中添加文字后,导致Span或Div排版掉落.错位”的原因及解决方法: 正文: 场景:两个 div 排在一行上,各有固定宽高, ...
- spring+mybatis+shiro入门实例
sql: 1 /* 2 SQLyog Ultimate v11.33 (64 bit) 3 MySQL - 5.1.49-community : Database - db_shiro 4 ***** ...
- 《Java 面试问题 一 Spring 、SpringMVC 、Mybatis》
自己理解SSM框架可能问到的面试问题 一.需要知道的SSM基础知识 1.什么是Spring? Spring 是一款轻量级的 IOC (依赖反转) 和 APO (面向切面) 容器框架.(个人理解: 就 ...