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:
最新文章
- insertion sort(插入排序)
- https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete-addressform
- 如何在HTML5 Canvas 里面显示 Font Awesome 图标
- Caliburn实现MVVM模式的编程
- java文件复制函数
- UVA 11489 - Integer Game(找规律)
- linux基础命令学习(一)
- 解决Unable to connect to a repository at URL 禁止访问 (forbidden)
- 关于用自带摄像机录像无法捕获uri 问题解决
- 栈 &; 堆 |-->; 内存管理
- OSChinaclient源代码学习(1)--Android与Server的交互
- Intellij-创建Maven项目速度慢
- Python高阶函数之 - 装饰器
- linux-0.11 内核源码学习笔记一(嵌入式汇编语法及使用)
- Spring配置文件中的那些标签意味着什么(持续更新)
- GDB常用命令系列
- 第十一章 dubbo通信框架-netty4
- 异常处理:No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer
- 全局修改composer源地址
- Vue学习笔记 ——v-html