关于Spring IOC的学习和理解
面向对象——三层架构(表现层、业务层、持久层)
三层架构:即表现层、业务层、持久层。
① 持久层:采用DAO模式,建立实体类和数据库表映射(ORM映射)。也就是哪个类对应哪个表,哪个属性对应哪个列。持久层
的目的就是,完成对象数据和关系数据的转换。
② 业务层:采用事务脚本模式。将一个业务中所有的操作封装成一个方法,同时保证方法中所有的数据库更新操作,即保证同时成
功或同时失败。避免部分成功部分失败引起的数据混乱操作。
③ 表现层:采用MVC模式。
M称为模型,也就是实体类。用于数据的封装和数据的传输。
V为视图,也就是GUI组件,用于数据的展示。
C为控制,也就是事件,用于流程的控制
设计原则:
业务层接口的设计原则:一个实体类一个接口,一次提交一个业务方法。业务方法的参数来自表现层。
持久层接口的设计原则:一个实体类一个接口,一次数据库操作一个持久方法。
File不属于流,它只是用来屏闭不同文件系统,用来统一 描述文件的实体BEAN,new File时给它传入文件名称或是路径,它就会去根据参数查找对应的文件属性然后封装 成实体。用来处理判断该路径是一个文件还是路径,文件或路径的权限,修改时间等等,路径的子路径list等等目录操作。
File不属于文件流,只能代表一个文件或是目录的路径名而已.
而FileInputStream关注的是文件的内容,是用来进行文件读写等操作的二进制流类。大多数情况下,构造FileInputStream 时传递一个File对象做参数,也可以直接传递String的文件路径。
关于变量初始化的问:现在的理解是,如果是全局变量默认初始化,局部变量必须要初始化,或者直接赋值我也觉得可以(但是一开始就直接赋值可能后面用到了就不太好了)
serclet:https://www.cnblogs.com/xdp-gacl/p/3760336.html
--
setter和getter方法的理解:
其实说得明白点吧,这只是java类(特别的很多时候是一个javabean)的两个方法,以提供对某个变量(字段)设置与访问的两个入口,在很多时候也正如你说,跟定义成public是没有两样的,具体的原因在于:
(1)由于很多框架都是调用这两个方法来实现沟通,这是一种习惯了。
(2)get/set方法也不一定只是简单的作一个赋值,或一个返回值吧,在这里可以作一些权限的控制,比如不是每个角色都可以赋值的。再比如返回的值不一定是值本身,可以是经过处理了的,比如加密,这用public定义是不能作到的。
关于@Autowired的的详解,清晰,透彻
https://www.cnblogs.com/caoyc/p/5626365.html
@component是Spring中注解注解配置的一种方式(个人觉得也是工作最常用最简单的方法),作用就是代替new对象的过程,实际上就是实例化一个对象,将其放到IOC容器中,当别人需要这个对象的时候,通过@Autowire将改对象注入到自己的类中,通过Autowire 在容器中找到该对象,不需要new,总的来说,就是@component负责new出来对象,放入容器中,@Autowire负责用到时取出来,Autowire是通过类型来取,就是该实现类如果只有一个就会直接取该类的对象,如果有多个类,则通过名字来取,如果没有就会报错
具体案例见链接:https://www.cnblogs.com/caoyc/p/5626365.html
扩展:如果不通过@Autowired的,若需要通过Setter来注入对象:
用@Autowired,用@Autowired的则替代setter,方便简单,但是要在xml文件中配置相关参数
- package com.proc.bean.service;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import com.proc.bean.repository.UserRepository;
- @Service
- public class UserService {
- @Autowired
- private UserRepository userRepository;
- public void save(){
- userRepository.save();
- }
- }
用Setter:
- package com.proc.bean.service;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import com.proc.bean.repository.UserRepository;
- @Service
- public class UserService {
- private UserRepository userRepository;
//这儿就是setter方法,同样可以得到userRepository对象。
- public int getuserRepository()
{
return userRepository;
}- public void setuserRepository(UserRepository userRepository)
{
this.userRepository= userRepository;
}
public void save()
{
userRepository.save();
}
}
Spring的构造注入、setter注入以及自动装配链接:https://blog.csdn.net/lu677521/article/details/79017912
一、Bean是啥
1、Java面向对象,对象有方法和属性,那么就需要对象实例来调用方法和属性(即实例化);
2、凡是有方法或属性的类都需要实例化,这样才能具象化去使用这些方法和属性;
3、规律:凡是子类及带有方法或属性的类都要加上注册Bean到Spring IoC的注解;
4、把Bean理解为类的代理或代言人(实际上确实是通过反射、代理来实现的),这样它就能代表类拥有该拥有的东西了
以Bean为核心的IOC/DI机制:
总述理论核心:在spring中,所有的对象都会被spring核心容器管理。一切对象统称为Bean。
Spring容器可通过XML配置文件或者注解去管理这堆Bean。bean是一个组件
二、注解分为两类:
1、一类是使用Bean,即是把已经在xml文件中配置好的Bean拿来用,完成属性、方法的组装;比如@Autowired , @Resource,可以通过byTYPE(@Autowired)、byNAME(@Resource)的方式获取Bean;
2、一类是注册Bean,@Component , @Repository , @ Controller , @Service , @Configration这些注解都是把你要实例化的对象转化成一个Bean,放在IoC容器中,等你要用的时候,它会和上面的@Autowired , @Resource配合到一起,把对象、属性、方法完美组装。
关于Spring IOC的学习和理解的更多相关文章
- JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(6):Spring IOC容器学习(概念、作用、Bean生命周期)
一.IOC控制反转概念 控制反转(IOC)是一种通过描述(在Java中可以是XML或者是注解)并通过第三方去生产或获取特定对象的方式. 主动创建模式,责任在于开发者,而在被动模式下,责任归于Ioc容器 ...
- Spring ioc与aop的理解
一 spring的特点 1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易 ...
- Spring 学习教程(一):浅谈对Spring IOC以及DI的理解
一.个人对IoC(控制反转)和DI(依赖注入)的理解我们平时在开发java web程序的时候,每个对象在需要使用它的合作对象时,自己都要将它要合作对象创建出来(比如 new 对象),这个合作对象是由自 ...
- 对Spring IOC和AOP的理解
控制反转(IOC)是什么?(理解好Ioc的关键是要明确"谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了") 1.Ioc-Inversion of Contr ...
- spring ioc和aop的理解
IOC,依赖倒置的意思,所谓依赖,从程序的角度看,就是比如A要调用B的方法,那么A就依赖于B,反正A要用到B,则A依赖于B.所谓倒置,你必须理解如果不倒置,会怎么着,因为A必须要有B,才可以调用B,如 ...
- Spring ioc,aop的理解
什么是控制反转? 控制反转是一种将组件依赖关系的创建和管理置于程序外部的技术. 由容器控制程序之间的关系,而不是由代码直接控制 由于控制权由代码转向了容器,所以称为反转 依赖注入,作用是避免手工在各代 ...
- 框架面试题:谈谈我对Spring IOC与DI的理解
IOC是一种叫做“控制反转”的设计思想. 1.较浅的层次——从名字上解析 “控制”就是指对 对象的创建.维护.销毁等生命周期的控制,这个过程一般是由我们的程序去主动控制的,如使用new关键字去创建一个 ...
- 【转】spring IOC和AOP的理解
spring 的优点?1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易实 ...
- spring ioc DI 理解
下面是我从网上找来的一些大牛对spring ioc和DI的理解,希望也能让你对Spring ioc和DI的设计思想有更进一步的认识. 一.分享Iteye的开涛对Ioc的精彩讲解 Ioc—Inversi ...
随机推荐
- python中字典常用的方法
#定义一个空字典: a={ } 定义一个字典: d={'age':18} #增加一个元素: d['age']=20 d[k]=v d.setdefault('age',18) d.setde ...
- 50个常用的Linux命令
1.tar tar -xvf archive_name.tar 解压文件 tar -cvf archive_name.tar file 把文件file压缩成archive_name.tar tar ...
- python中的import,reload,以及__import__
python中的import,reload,以及__import__ 分类: UNIX/LINUX C/C++LINUX/UNIX shellpython2013-04-24 20:294536人阅读 ...
- Convert the AScii to SAC file
readtable *.txt w sac filename.sac ch delta dela0 w over
- synchronized 和 ReentrantLock 区别
synchronized 使用: 1:当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁.结果,其它线程对该object对象所有同步代 ...
- Android:如何获取屏幕的宽高
WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE); DisplayMet ...
- http协议tcp协议ip协议三次握手四次挥手,为什么三次握手,为什么四次挥手,sockete套接字理解
1.1 TCP是什么? TCP是Tranfer Control Protocol的简称,TCP协议是一种面向连接的.可靠的.基于字节流的运输层通信协议.通过TCP协议传输,得到的是一个顺序的无差错的数 ...
- LeetCode--122、167、169、189、217 Array(Easy)
122. Best Time to Buy and Sell Stock II Say you have an array for which the ith element is the price ...
- String中对字符串进行操作的一些方法
1.substring 作用:根据字符串下标进行截取 public class StrTest { public static void main(String[] args) { String a ...
- table中head表头固定,body滚动
<style type="text/css"> .table-head { background-color: #; color: #; } .table-body { ...