关于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配合到一起,把对象、属性、方法完美组装。

posted on 2018-10-23 14:24  Cherishforchen  阅读(144)  评论(0编辑  收藏  举报

导航