精华内容
下载资源
问答
  • 随堂笔记

    2019-05-29 22:15:00
    1.复习了昨天学习的 CSS层叠样式表css的语法以及css的使用方式1.行内样式2.内部样式表3.外部样式表4.外部导入样式css选择器:ID选择器 class选择器 标签选择器 组合选择器 子代选择器后代选择器 通用选择器 伪类选择...
    1.复习了昨天学习的
    CSS层叠样式表
     css的语法以及css的使用方式1.行内样式2.内部样式表3.外部样式表4.外部导入样式
     css选择器:ID选择器  class选择器 标签选择器 组合选择器 子代选择器
       后代选择器  通用选择器  伪类选择器       :hover鼠标悬浮上去的样式
     css样式的优先级1.根据权重来确定  2.如果权重相同,就近原则(后定义原则)
     权重:仅仅只是一个参考的值,并没有实际的含义 注意:计算权重的时候不需要去管子代、后代。直接加起来就行了
     元素的显示方式
       display     
        inline     行内元素
        inline-block
        block
        none       隐藏    隐藏后不占位置
      元素的隐藏
       visibility:hidden   隐藏以后还会继续保留位置
      轮廓
       主要用在input标签中,只需要清空即可
      列表
       list-style:none 即可
      鼠标的样式
       cursor 课后自己试试看效果
    2.今天学习了CSS背景类样式
      background-color     背景颜色
      background-image     背景图片
      background-repeat    背景图片的重复
      background-size      背景图片的大小
       repeat-y     只允许在y轴重复
       repeat-x     只允许在x轴重复
       no-repeat    不重复,只显示一次
      background-position  背景图片的定位
      取值: 两个,分别表示x和y方向。如果只写一个,则两个值相等
                  简写:background:背景颜色 背景图片地址 背景平铺 背景滚动 背景位置  
                    #000 url() no-repeat fixed center top;
    3.框模型
         盒子模型的组成:
      margin    外边距  padding   内边距
      border    边框  content   内容
       margin:合起来写的属性:一个值,四个全相同;两个值,表示上下和左右;三个值表示上  左右 下  四个值表示上右下左    也可以单独写    另外和居中写margin:0 auto;
       padding:指边框与内容之间的距离 和margin用法相同
       border:边框宽度 样式 颜色  (不需要区分顺序)
       定义的宽和高只是内容部分,padding和border会把盒子撑大
    4.定位:    top,left,right,bottom 只有元素增加定位的情况下才会使用
     相对定位:相对自身位置移动
     绝对定位:相对于定位夫级移动位置
     固定定位:相对于浏览器移动位置
     相对定位,占位置;绝对定位和固定定位不占位置
     一般有子绝父相 子绝父绝
    5.学习了层叠次序
     z-index默认为0,取值越大,定位元素在层叠元素中越居上
     如果取值相同,则后来居上    后面不加单位
    6.学习浮动
     分为左浮动和右浮动   浮动会脱离文档流
       清除浮动
     不是清除自身的浮动,而是清除上一个浮动对自身造成影响
     overflow: hidden;  溢出隐藏,主要是用于清除浮动
     增加一个空的标签,清除所有的浮动,即可解决高度失效的问题(clear:both)
     还有伪类清除浮动
     
    拓展雪碧图(sprite)也称精灵图, 各个小图标的集合,使用的目的是减少http的请求
          

    转载于:https://www.cnblogs.com/hdkx/p/10946627.html

    展开全文
  • ccnp学习笔记
  • Java随堂笔记

    2016-05-31 15:36:23
    本人结合自己所学的知识整理的,比较适合初学者。当然也适合巩固复习Java。 里面的在企业开发中会经常用到,属于必学或必了解的。
  • Linux随堂笔记

    2017-07-20 14:02:05
    Linux随堂笔记
  • Centos环境搭建,虚拟机vmware安装centos7,centos7,centos安装,centos安装使用初步
  • PE随堂笔记

    2015-03-14 23:47:25
    自己学习PE的笔记,介绍PE的组成,希望能帮助大家
  • 包含数据库SQLite的的增查改删的实现,简单实现课堂会议的笔记功能。
  • Python数据分析和人工智能随堂笔记(千峰) 包含:numpy,opencv,pandas,数据预处理,美国大选政治献金,scipy,机器学习与回归算法,决策树,贝叶斯&文本处理,支持向量机,tensorflow……
  • java随堂笔记

    2014-03-03 23:36:08
    java基础知识笔记,达内科技培训笔记电子档
  • vue随堂笔记.pdf

    2021-11-10 08:54:22
    vue随堂笔记.pdf
  • JavaSE开发随堂笔记

    2021-04-19 10:56:45
    JavaSE开发随堂笔记
  • 8-28随堂笔记

    2018-08-30 13:39:10
    一、iptables规则备份和恢复 二、firewalld的9个zone 三、firewalld关于zone的操作 四、firewalld关于service的操作 五、linux任务计划cron 六、chkconfig工具 ...设定的防火墙规则只是保存在内存中,并没有...

    一、iptables规则备份和恢复

    二、firewalld9zone

    三、firewalld关于zone的操作

    四、firewalld关于service的操作

    五、linux任务计划cron

    六、chkconfig工具

    七、systemd管理服务

    八、unit介绍

    九、target介绍

     

     

    一、iptables规则备份和恢复

    设定的防火墙规则只是保存在内存中,并没有保存到配置文件中,也就说当系统重启后以前设定的规则就没有了,所以
    设定好规则后要先保存规则,以免重启后规则丢失。
    [root@localhost ~]# service iptables save

    备份iptables-save > /tmp/ipt.txt  将当前的iptables取名为ipt.txt

    恢复iptables-restore < /tmp/ipt.txt

     

    二、firewalld9zone

     

    关闭 iptables

    [root@zhaoxiang-linux01 ~]# systemctl disable iptables

    [root@zhaoxiang-linux01 ~]# systemctl stop iptables

    打开 firewalled

    [root@zhaoxiang-linux01 ~]# systemctl enable firewalld

    [root@zhaoxiang-linux01 ~]# systemctl start firewalld

     

     

     

    三、firewalld关于zone的操作

    查询默认zone

    firewall-cmd --get-default-zone

    例如将默认组改成work

    firewall-cmd --set-default-zone=work

    firewall-cmd --get-default-zone查看zone所在区域

    firewall-cmd --get-zone-of-interface=ens33 //查指定的网口zone

     

    四、firewalld关于service的操作

    列出系统里所有的service

    1, 查看 系统所有的servie

    firewall-cmd --get-service

    2firewall-cmd --list-services 查看有哪些service

    3,查看指定的zone包含的service

    firewall-cmd --zone=指定zone --list-services

    firewall-cmd --zone=work --list-services

    4,增加 http到指定public

    firewall-cmd --zone=public --add-service=http  (注意这个是临时增加)

    5,增加永久 加上firewall-cmd --zone=public --add-service=http –permanent(成为永久属性)

     

    五、linux任务计划cron(课堂提示,重点内容)

    启动crond服务。systemctl status crond.service

     

    当使用者执行crontab命令时,系统会按如下步骤操作
    1.先查找/etc/corn.allow文件,在该文件中存在的用户可以使用crontab,不在该文件中的用户不能使用crontab(即使用没
    有写在/etc/cron.deny中)
    2.如果没有/etc/cron.allow就寻找/etc/cron.deny文件,在该文件中存在的用户不能使用crontab,在该文件中不存的用户就
    可以用crontab
    3.
    如果两个文件都不存在,则只有root可以使用crontab
    多数linux版本默认的文件是/etc/cron.deny,而且该文件为空

    每个*别是分、时、日、月、周,如果不指定用户的话,默认是root

    -e=edit 编辑用户的计时器设置 
    -l
    =list 列出用户的计时器设置 
    -r
    =remove 删除用户的计时器设置 
    -u
    =user 指定设定计时器的用户

    每日凌晨三点执行123.sh

    注意配置一定要绝对路径

     

     

    crontab建立例行性任务的方式
    1.针对用户的例行性任务,用crontab ­e命令来管理任务
    2.针对系统的例行性任务,可以通过/etc/crontab文件来管理任务
    针对用户的例行性任务
    语法: crontab [­u username] [­l|­e|­r]
    选项说明
    ­u 只用root才有权限使用这个参数,用于帮助其他用户建立或删除crontab
    ­e
    编辑crontab的工作内容,即进入crontab编辑模式
    ­l 查看crontab的工作内容
    ­r 移除crontab的工作内容,如果要删除某一项的内容,只能使用crontab ­e手动删除
    crontab的模式是:分 命令
    分范围0­59,时范围0­23,日范围1­31,月范围1­12,周1­7
    "­"
    表示一个时间段范围,可用格式1­5表示一个范围15
    "
    ,"
    表示分割时段的意思,可用格式1,2,3表示1或者2或者3
    "*"
    表示任何时间都能够接受,任何时间都可以执行该命令可用格式。"/n"代表每隔n个时间单位。*/2表示被2整除的数字,
    比如小时,那就是每隔2

     

    六、chkconfig工具

    Centos6及以前版本系统中运行级
    等级0表示:表示关机
    等级1表示:单用户模式
    等级2表示:多用户模式,少nfs服务
    等级3表示:多用户模式,不带图形
    等级4表示:是一种保留的级别
    等级5表示:带图形界面的多用户模式
    等级6表示:重新启动
    centos6中的 /etc/inittab 中定义开机的默认运行级别
    centos7中,已经没有用运行级的概念了,只是为了向上兼容。
    系统服务的脚本存放在 /etc/init.d/

    用法
    chkconfig [­­list] [­­type 类型] [名称]
    chkconfig ­­add
    名称
    chkconfig ­­del 名称
    chkconfig ­­override 名称
    chkconfig [­­level 级别] [­­type 类型] 名称 on|off|resetpriorities

    显示系统服务列表chkconfig –list

    016级别不能设置成开
    0级别在关机状态是不可能开启的
    1级别是单用户模式,服务是不可能开启的
    6级别在重启的时候,是不可能开启的——>重启相当于先关闭在启动(重启的那一刻是先关闭才对)。
    一个脚本加入到服务列表中
    首先该启动脚本要放入到 /etc/init.d 这个目录下——>只有在这个目录下,才可以添加到服务列表中去
    其次脚本格式有如下要求
    一是一个shell脚本二是固定格式:

    //启动和关闭顺序自己定义即可,这里是 64 36 # chkconfig: 2345 64 36

    最后用chkconfig add将相应的脚本加入到服务列表chkconfig --add mysql

    删除服务列表中的服务  chkconfig --del mysql

     

    七、systemd管理服务

    Systemd Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速
    度。
    systemd 的目标是:
    尽可能启动更少的进程
    尽可能将更多进程并行启动
    查看systemd信息
    显示单元依赖关系 systemctl list­dependencies

    显示sockets信息和哪些是活动的systemctl list­sockets

    查看活动的system任务systemctl list­jobs

    显示默认的目标
    [root@localhost ~]# systemctl get-default

    multi-user.target

    查看firewalld服务状态

    [root@localhost ~]# systemctl status firewalld.service

    重启服务
    [root@localhost ~]# systemctl restart firewalld.service

    改变系统状态
    重启
    systemctl reboot
    关机
    systemctl poweroff
    进入紧急模式
    systemctl emergency
    恢复默认目标
    systemctl default
    查看日志消息
    显示收集的所有日志消息
    [root@localhost ~]# journalctl

    查看网络服务的消息
    [root@localhost ~]# journalctl ­u network.service

     

     

    八、unit介绍

    系统初始化需要做的事情非常多。需要启动后台服务,比如启动 SSHD 服务;需要做配置工作,比如挂载文件系统。这
    个过程中的每一步都被 systemd 抽象为一个配置单元,即 unit。可以认为一个服务是一个配置单元;一个挂载点是一个
    配置单元;一个交换分区的配置是一个配置单元;等等。systemd 将配置单元归纳为以下一些不同的类型
    service 系统服务
    target 多个unit组成的组
    device 硬件设备
    mount 文件系统挂载点
    automount 自动挂载点
    path 文件或路径
    scope 不是由systemd启动的外部进程
    slice 进程组
    snapshot systemd快照
    socket 进程间通信套接字
    swap swap文件
    timer 定时器
    systemd中与unit相关的命令

    列出正在运行的unit

    [root@localhost ~]# systemctl list-units

    列出所有,包括失败的或者inactive

    [root@localhost ~]#systemctl list-units --all

     

    九、target介绍

    Centos7之前的版本,使用运行级别代表特定的操作模式。运行级别被定义为七个级别,用数字06表示,每个级别可
    以启动特定的一些服务。Centos7使用target替换运行级别。
    一个service属于一种类型的unit
    多个unit组成了一个target
    一个target里面包含了多个service
    列出系统中所有的target
    [root@localhost ~]# systemctl list­unit­files ­­type=target

    查看指定target下面有哪些unit

    [root@localhost ~]# systemctl list-dependencies multi-user.target

    查看所有的target

    [root@localhost ~]#systemctl list-units --type=target --all

    查看系统默认的target

    [root@localhost ~]# systemctl get-default

    设置默认的target

    [root@localhost ~]# systemctl set-default multi-user.target

    查看

    cat /usr/lib/systemd/system/sshd.service [install]部分

    十、扩展
    扩展链接:
    Anacron
    https://www.jianshu.com/p/3009a9b7d024?from=timeline
    xinetd
    守护进程
    http://blog.sina.com.cn/s/blog_465bbe6b010000vi.html
    systemd
    自定义启动脚本
    http://www.jb51.net/article/100457.htm

     

     

     

    展开全文
  • 随堂笔记01.docx

    2021-10-03 16:01:37
    随堂笔记01.docx
  • 2020-02-15 学习《Linux就该这么学》随堂笔记第二课 授课老师:刘遄 第一章 部署虚拟环境安装Linux系统、新手必须掌握的Linux命令 1)、安装配置vm虚拟机 注意事项:1、电脑内存小于2G的,虚拟机内存设为1G,电脑...
  • 3dmax随堂笔记

    2013-07-16 17:26:58
    3dmax的随堂笔记
  • SpringIOC 随堂笔记

    2021-09-05 14:09:47
    1、IOC概念 1、IOC-Inversion of Control,即控制反转,不是什么技术,而是一种设计思想。 2、IoC 是指在程序开发中,实例的创建不再由调用者管理,而是由 Spring 容器创建。Spring 容器会负责控 制程序之间的关系,...

    1、IOC概念

    1、IOC-Inversion of Control,即控制反转,不是什么技术,而是一种设计思想。

    2、IoC 是指在程序开发中,实例的创建不再由调用者管理,而是由 Spring 容器创建。Spring 容器会负责控 制程序之间的关系,而不是由程序代码直接控制,因此,控制权由程序代码转移到了 Spring 容器中,控 制权发生了反转,这就是 Spring 的 IoC 思想。

    2、Spring入门案例

    2.1、创建maven项目

    pom.xml文件

    <dependencies>
    <!--单元测试--> <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
    <!--spring依赖--> <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.2.13.RELEASE</version>
            </dependency>
        </dependencies>
        <build>
            <plugins>
    <!--编译插件--> <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
    </build>
    

    2.2、创建一个实体类

    public class Team {
        private Integer id;
        private String name;
        private String location;
    public Team() { System.out.println("Team的默认构造方法被调用:id="+id+",name="+name+",
    location="+location);
        }
    }
    

    2.3、创建Spring的配置文件application.xml

    在这里插入图片描述

    2.4、使用Spring容器创建对象

    配置文件中创建对象

    <?xml version="1.0" encoding="UTF-8"?>
    <!--spring的配置文件
    1、beans: 根标签,spring中java的对象成为bean 2、spring-beans.xsd 是约束文件(约束XML文件中能编写哪些标签)-->
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--创建对象:声明bean,通知spring要创建哪个类的对象 一个bean标签声明一个对象:
    名
    -->
    id="自定义的对象名称" ,要求唯一
    class="类的完全限定名" 包名+类名,spring底层是反射机制创建对象,所以必须使用类
    相当于 Team team1=new Team();创建好的对象放入一个集合Map中 例如:springMap.put("team1",new Team());
        <bean id="team1" class="com.kkb.pojo.Team"></bean>
    </beans>
    

    2.5、获取Spring容器

    Spring 提供了两种 IoC 容器,分别为 BeanFactory 和 ApplicationContext.

    2.5.1、BeanFactory

    BeanFactory 是基础类型的 IoC 容器,是一个管理 Bean 的工厂,它主要负责初始化各种 Bean,并调用 它们的生命周期方法。
    BeanFactory 接口有多个实现类,最常见的是org.Springframework.beans.factory.xml.XmlBeanFactory,它是根据 XML 配置文件中的定义装配 Bean 的。

    BeanFactory beanFactory = new XmlBeanFactory(new FileSystemResource(Spring配置文件 的名称));
    

    2.5.2、ApplicationContext

    ApplicationContext 是 BeanFactory 的子接口,也被称为应用上下文。它不仅提供了 BeanFactory 的 所有功能,还添加了对 i18n(国际化)、资源访问、事件传播等方面的良好支持。

    ApplicationContext 接口有两个常用的实现类:

    • ClassPathXmlApplicationContext——常用

    该类从类路径 ClassPath 中寻找指定的 XML 配置文件,找到并装载完成 ApplicationContext 的实例化工作

    ApplicationContext applicationContext=new ClassPathXmlApplicationContext(Spring配 置文件的名称);
    
    • FileSystemXmlApplicationContext
    ApplicationContext applicationContext = new
    FileSystemXmlApplicationContext(String configLocation);
    

    它与 ClassPathXmlApplicationContext 的区别是:在读取 Spring 的配置文件时, FileSystemXmlApplicationContext 不再从类路径中读取配置文件,而是通过参数指定配置文件的位 置,它可以获取类路径之外的资源,如“D:\application.xml”。

    2.6、通过上下文对象获取容器中的对象

    import com.pojo.Team;
    import org.junit.Test;
    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.beans.factory.xml.XmlBeanFactory;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.context.support.FileSystemXmlApplicationContext;
    import org.springframework.core.io.FileSystemResource;
    import java.util.Date;
    public class Test1 {
        @Test
    public void test01(){ //使用spring容器创建对象 //1、指定spring配置文件的名称
    String springConfig="application.xml"; //2、创建spring容器的对象: //方式1:不推荐,了解
            //BeanFactory beanFactory = new XmlBeanFactory(new
    FileSystemResource("D:/workspaces/ideaProjects/MySpring/spring01/src/main/resour
    ces/application.xml"));
    //beanFactory.getBean("team1");//根据ID从IOC容器获取对象 //方式2:applicationContext--常用
    ApplicationContext applicationContext=new
    ClassPathXmlApplicationContext(springConfig);//这里执行完毕容器中的对象都已经创建完成
    //方式3:applicationContext--了解
            //ApplicationContext applicationContext2 = new
    FileSystemXmlApplicationContext("D:/workspaces/ideaProjects/MySpring/spring01/sr
    c/main/resources/application.xml");
    //3、获取容器中的对象
    Team team1= (Team) applicationContext.getBean("team1"); //4、容器其他api
    int beanDefinitionCount = applicationContext.getBeanDefinitionCount(); System.out.println("spring容器中对象的个数:"+beanDefinitionCount); String[] beanDefinitionNames =
    applicationContext.getBeanDefinitionNames(); System.out.println("spring容器中所有对象的名称:"); for (String name : beanDefinitionNames) {
    } 
    }
    

    2.7、创建非自定义对象

    <!--创建非自定义的对象-->
        <bean id="date" class="java.util.Date"></bean>
    
    上面的测试方法中添加如下内容:
    //5、获取日期对象
    Date date1= (Date) applicationContext.getBean("date1"); System.out.println("日期:"+date1);
    

    2.8、Bean标签的属性

    属性说明
    class指定bean对应类的全路径
    namename是bean对应对象的一个标识
    scope执行bean对象创建模式和生命周期,scope="singleton"和scope=“prototype”
    idid是bean对象的唯一标识,不能添加特别字符
    lazy-init是否延时加载 默认值:false。true 延迟加载对象,当对象被调用的时候才会加载,测试 的时候,通过getbean()方法获得对象。lazy-init=“false” 默认值,不延迟,无论对象 是否被使用,都会立即创建对象,测试时只需要加载配置文件即可。注意:测试的时候只 留下id,class属性
    init- method只需要加载配置文件即可对象初始化方法
    destroy- method对象销毁方法

    示例演示:
    Team实体类补充如下方法:

    public void init(){
         System.out.println("Team ---- init()");
    }
    public void destroy(){
         System.out.println("Team ---- destroy()");
    }
    

    application.xml配置文件添加如下内容:

    <!-- bean标签的属性:
    id="自定义的对象名称" ,要求唯一 name="bean对于的一个标识“,一般使用id居多 class="类的完全限定名" scope="singleton/prototype" 单例/多例
    singleton:默认值,单例:在容器启动的时候就已经创建了对象,而且整个容器只有为一个
    的一个对象
    prototype:多例,在使用对象的时候才创建对象,每次使用都创建新的对象 lazy-init="true/false" 是否延迟创建对象,只针对单例有效
    true:不延迟创建对象,容器加载的时候立即创建
    false:默认加载,使用对象的时候才去创建对象 init-method="创建对象之后执行的初始化方法" destroy-method="对象销毁方法,调用容器destroy方法的时候执行"
    -->
        <bean id="team2" class="com.kkb.pojo.Team" scope="singleton" lazy-
    init="true" init-method="init" destroy-method="destroy"/>
        <bean id="team3" class="com.kkb.pojo.Team" scope="prototype" />
    
    @Test
    public void test02(){
            String springConfig="application.xml";
            ClassPathXmlApplicationContext applicationContext=new
    ClassPathXmlApplicationContext(springConfig);
            Team team1 = (Team) applicationContext.getBean("team1"); 
            Team team11 = (Team) applicationContext.getBean("team1"); 
            System.out.println(team1);
            System.out.println(team11);
            Team team2 = (Team) applicationContext.getBean("team2"); 
            Team team22 = (Team) applicationContext.getBean("team2"); 
            System.out.println(team2);
            System.out.println(team22); 
            applicationContext.close();//关闭容器
    }
    

    3、Spring容器创建对象的方式

    1、使用默认的构造方法

    2、使用带参的构造方法

    3、使用工厂类

    public class MyFactory {
    /**
    * 实例方法 * @return */
    public Team instanceFun(){ 
      System.out.println("MyFactory------instanceFun"); 
      return new Team(1003,"湖人","洛杉矶");
    }
    /**
    * 静态方法 * @return */
    public static Team staticFun(){
        System.out.println("MyFactory------staticFun"); 
        return new Team(1004,"小牛","达拉斯");
    }
    public static void main(String[] args) {
            Team team1 = MyFactory.staticFun();
            MyFactory factory=new MyFactory();
            Team team = factory.instanceFun();
    } }
    

    创建新的配置文件createType.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--spring容器创建对象的方式: 1、通过默认构造方法
    2、通过带参数的构造方法
    3、通过工厂方法:实例方法,静态方法--> <!--1、通过默认构造方法-->
    <bean id="team1" class="com.kbb.pojo.Team"></bean> <!-- 2、通过带参数的构造方法-->
    <bean id="team2" class="com.kbb.pojo.Team">
    <!--name:表示参数的名称-->
    <constructor-arg name="id" value="1001"/> <constructor-arg name="name" value="勇士"/> <constructor-arg name="location" value="金州"/>
        </bean>
        <bean id="team3" class="com.kbb.pojo.Team">
    <!--index:表示参数的下标索引--> <constructor-arg index="0" value="1002"/> <constructor-arg index="1" value="热火"/> <constructor-arg index="2" value="迈阿密"/>
    </bean>
    <!--3、通过工厂方法: 3.1 静态方法
                Team team1 = MyFactory.staticFun();-->
        <bean id="staticTeam" class="com.kbb.pojo.MyFactory" factory-
    method="staticFun"></bean>
    <!--3、通过工厂方法: 3.2 实例方法
            MyFactory factory=new MyFactory();
            Team team = factory.instanceFun();-->
        <bean id="factory" class="com.kbb.pojo.MyFactory"></bean>
        <bean id="instanceTeam" factory-bean="factory" factory-method="instanceFun">
    </bean>
    </beans>
    

    测试类:

    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    public class CreateTypeTest {
    @Test
    public void test01(){
            ApplicationContext ac=new
    ClassPathXmlApplicationContext("createType.xml");
        }
    }
    

    4、基于XML的DI

    • DI—Dependency Injection,即“依赖注入”:是组件之间依赖关系由容器在运行期决定,形象的说,即 由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为 了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过 简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资 源来自何处,由谁实现。

    • IoC 是一个概念,是一种思想,其实现方式多种多样。依赖注入就是其中用的比较多的一种方式。

    • Ioc和DI是同一个概念的不同角度描述。IoC是一种思想,概念,DI是实现它的手段。Spring框架使用依
      赖注入实现IoC.

    • Spring 容器是一个超级大工厂,负责创建、管理所有的 Java 对象,这些 Java 对象被称为 Bean。

    4.1、注入分类

    bean 实例在调用无参构造器创建对象后,就要对 bean 对象的属性进行初始化。初始化是由容器自动完
    成的,称为注入。

    4.1.1、通过set方法

    set 注入也叫设值注入是指,通过 setter 方法传入被调用者的实例。这种注入方式简单、直观,因而在
    Spring 的依赖注入中大量使用。

    4.1.2、通过构造方法

    构造注入是指,在构造调用者实例的同时,完成被调用者的实例化。使用构造器设置依赖关系。

    4.1.3、自动注入

    对于引用类型属性的注入,也可不在配置文件中显示的注入。可以通过为标签
    设置 autowire 属性值,为引用类型属性进行隐式自动注入(默认是不自动注入引用类型属 性)。根据 自动注入判断标准的不同,可以分为两种:

    • byName:根据名称自动注入
    • byType: 根据类型自动注入

    1、byName
    当配置文件中被调用者 bean 的 id 值与代码中调用者 bean 类的属性名相同时,可使用byName 方式, 让容器自动将被调用者 bean 注入给调用者 bean。容器是通过调用者的 bean类的属性名与配置文件的 被调用者 bean 的 id 进行比较而实现自动注入的。

    2、byType
    使用 byType 方式自动注入,要求:配置文件中被调用者 bean 的 class 属性指定的类,要与代码中调用 者 bean 类的某引用类型属性类型同源。即要么相同,要么有 is-a 关系(子类,或是实现类)。但这样 的同源的被调用 bean 只能有一个。多于一个,容器就不知该匹配哪一个了。

    5、基于注解实现IOC

    对于 DI 使用注解,将不再需要在 Spring 配置文件中声明 bean 实例。Spring 中使用注解,需要在原有
    Spring 运行环境基础上再做一些改变。

    5.1、声明Bean的注解 @Compent

    在类上添加注解@Component表示该类创建对象的权限交给Spring容器。注解的value属性用于指定 bean的id值,value可以省略。
    @Component 不指定 value 属性,bean 的 id 是类名的首字母小写。

    除此之外,Spring中还提供了其他3个用于创建对象的注解:
    @Repository : 用于dao实现类的的注解
    @Service: 用户service实现类的注解
    @Controller: 用于controller实现类的注解

    这三个注解与@Component 都可以创建对象,但这三个注解还有其他的含义,@Service创建业务层对 象,业务层对象可以加入事务功能,@Controller 注解创建的对象可以作为处理器接收用户的请求。
    @Repository,@Service,@Controller 是对@Component 注解的细化,标注不同层的对象。即持久 层对象,业务层对象,控制层对象。

    5.2、包扫描

    需要在 Spring 配置文件中配置组件扫描器,用于在指定的基本包中扫描注解。如果没有包扫描,添加的
    创建对象的注解不生效。
    如果要扫描的包有多个,可以有以下方式扫描:
    1、使用多个context:component-scan指定不同的包路径
    在这里插入图片描述
    2、指定 base-package的值使用分隔符
    分隔符可以使用逗号(,)分号(;)还可以使用空格,不建议使用空格。

    <!--多个包的扫描: 方式2 : base-package中直接声明要扫描的多个包 ,多个值用逗号,分号或者空格 分割,但是空格不推荐-->
       <context:component-scan base-
    package="com.kkb.dao,com.kkb.service,com.kkb.controller"></context:component-
    scan>
    

    3、base-package是指定到父包名

    base-package 的值表示基本包,容器启动会扫描包及其子包中的注解,当然也会扫描到子包下级的子
    包。所以 base-package 可以指定一个父包就可以。 但不建议使用顶级的父包,扫描的路径比较多,导致容器启动时间变慢。指定到目标包和合适的。也就
    是注解所在包全路径。

    <!--多个包的扫描: 方式3: base-package中直接声明要扫描的多个包的父包--> <context:component-scan base-package="com.kkb"></context:component-scan>
    

    5.3、属性注入(@value)

    需要在属性上使用注解@Value,该注解的 value 属性用于指定要注入的值。使用该注解完成属性注入 时,类中无需 setter。当然,若属性有 setter,则也可将其加到 setter 上。

    5.4、byType自动注入@Autowired

    需要在引用属性上使用注解@Autowired,该注解默认使用按类型自动装配 Bean 的方式。使用该注解完
    成属性注入时,类中无需 setter。当然,若属性有 setter,则也可将其加到 setter 上。

    5.5、byName自动注入@Autowired和@Qualifier

    需要在引用属性上联合使用注解@Autowired 与@Qualifier。@Qualifier 的 value 属性用于指定要匹配 的 Bean 的 id 值。类中无需 set 方法,也可加到 set 方法上。
    @Autowired 还有一个属性 required,默认值为 true,表示当匹配失败后,会终止程序运行。若将其值 设置为 false,则匹配失败,将被忽略,未匹配的属性值为 null。

    5.6、自动注入@Resource

    Spring提供了对 jdk中@Resource注解的支持。@Resource 注解既可以按名称匹配Bean,也可以按类 型匹配 Bean。默认是按名称注入。使用该注解,要求 JDK 必须是 6 及以上版本。@Resource 可在属性 上,也可在 set 方法上。

    5.6.1、byType注入引用类型属性

    @Resource 注解若不带任何参数,采用默认按名称的方式注入,按名称不能注入 bean,则会按照类型
    进行 Bean 的匹配注入。

    5.6.2、byName注入引用类型属性

    @Resource 注解指定其 name 属性,则 name 的值即为按照名称进行匹配的 Bean 的 id。

    展开全文
  • Java2002随堂笔记 4.docx

    2021-10-14 21:17:57
    Java2002随堂笔记 4.docx
  • CCNA随堂笔记

    2018-03-21 15:43:41
    大神讲解的CCNA笔记,绝对值得一看,有问题欢迎随时沟通交流
  • C语言随堂笔记.zip

    2019-10-05 20:21:16
    刚开始学习c语言的很有帮助,讲解的很简单 //1,包含头文件(*.h,源文件*.c) //输入/输出函数包含在stdio.h这个头文件中 #include //2、每一个c语言有且只有一个主函数main(),c++中main函数返回为int ...
  • 六年级英语下册随堂笔记.pdf
  • 整理了一下,从初学到函数的进阶,这段的笔记,后面的没整理,适合初学者辅助看看。C语言零基础入门(老九视频课随堂的随堂笔记)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,259
精华内容 1,703
关键字:

随堂笔记