前言
1.Tomcat的目录结构
bin: | 存放各种平台的启动、停止等命令 |
conf: | 存放服务器的各种配置文件 |
lib: | 存放服务器需要的jar包 |
log: | 服务器的日志 |
temp: | 服务器启动时,存放临时文件 |
webapps: | Web应用文件存放于此 |
work: | Tomcat吧JSP生成的servlet存放在这个文件夹下 |
bin: | 存放各种平台的启动、停止等命令 |
conf: | 存放服务器的各种配置文件 |
lib: | 存放服务器需要的jar包 |
log: | 服务器的日志 |
temp: | 服务器启动时,存放临时文件 |
webapps: | Web应用文件存放于此 |
work: | Tomcat吧JSP生成的servlet存放在这个文件夹下 |
首先,加载bean需要先写好配置文件(其实用注解也可以,只是不方便理解)
1 | <beans> |
多个配置文件是可以编制成数组,交给ApplicationContext加载的。
但是大家现在用习惯了注解
SpringMVC的IoC容器中,管理的bean 内部表示为BeanDefinition
一个bean需要以下属性
bean使用时必须有一个唯一的指定:
id必须唯一不可重复,一个bean可以有多个id,其余的id是别名;
没有id可以用唯一不重复的name,若有需要可以使用alias来指定别名,或者用,
隔开;
同时指定id和name,id就是标识符,而name就是别名,总之必须在IoC容器中唯一;
若id和name都没有指定,则bean在使用的时候会使用全限定的类名进行注入。
SpringMVC是通过反射来实例化bean的。
1.通过构造器实例化bean:
Spring IoC容器即能使用默认空构造器也能使用有参数构造器两种方式创建Bean,无参数的直接在XML文件中直接定义bean节点,带参数的可以在XML文件中bean节点下增加constructor-arg
参数属性:1
2
3
4<bean name="test" class="com.zing.test.HelloMvc">
<!-- 指定构造器参数 -->
<constructor-arg index="0" value="第一个参数"/>
</bean>
index是参数所在的位置,value表示注入常量值,也可以指定引用,指定引用使用ref来引用另一个Bean定义,当然注入还可以根据参数类型和名字来配置
1 | <!-- 根据变量名注入 --> |
1 | <!--构造器里注入另一个bean--> |
2.使用静态工厂来实例化bean
需要编写工厂方法,这样实例化的时候即可使用工厂方法来实例化bean
1 | package com.zing.test.factory_test; |
第一种工厂配置
1 | <!--为bean配置工厂方法--> |
第二种工厂配置
1 | <bean id="instanceFactory" class="com.zing.test.factory_test.HelloIoCFactory"/> |
1 | //通过工厂获取实例 |
3.通过setter方法进行注入
个人觉得:有必要吗?都是用注解的好不好,就列一下,不详细记录了
1 | <!-- 通过setter方式进行依赖注入 --> |
4.延时实例化
延时初始化又叫惰性初始化,作用是消除资源占用巨大的bean在程序初始化时的影响,防止因为这个bean,导致启动缓慢。延迟初始化的Bean通常会在第一次使用时被初始化;
配置如下:1
2<!-- 通过配置lazy-init="true"实现惰性初始化 -->
<bean id="helloApi" class="com.zing.test.HelloImpl lazy-init="true"/>
自动装配就是指由Spring来自动地注入依赖对象,无需人工参与。
目前Spring3.0支持no
、byName
、byType
、constructor
四种自动装配,默认是“no”指不支持自动装配的,其中Spring3.0已不推荐使用之前版本的autodetect
自动装配,推荐使用Java 5+支持的(@Autowired
)注解方式代替;
1 | <bean id="helloApi" class="com.zing.test.HelloImpl"/> |
byName
使用setter方法根据参数名称注入List
,Map
这样的类型,用autowire-candidate
属性为false
来让指定的Bean
放弃作为自动装配的候选者。使用primary
属性为true
来指定某个Bean
为首选Bean
constructor
构造器注入,只用在构造器中。autodetect
自动匹配,不推荐使用!不是所有的类型都支持自动匹配,
Object
、基本数据类型(Date、CharSequence、Number、URI、URL、Class、int
不支持<bean>
标签的autowire-candidate属性可被设为false,这个bean将不能作为可依赖注入的参数
数组类型、集合(Set、Collection、List
)接口类型:将根据泛型获取匹配的所有候选者并注入到数组或集合中
字典(Map)接口类型:同样根据泛型信息注入,键必须为String
类型的Bean
名字,值根据泛型信息获取
缺点
如果你用的是自动装配的话,出了问题会比较难找。不知道是哪里注入进来的,唉,这就是我等菜比为什么要先从配置开始看。现在流行用注解,会好不少。
用于检查Bean定义的属性都注入数据了,不管是自动装配的还是配置方式注入的都能检查,如果没有注入数据将报错,从而提前发现注入错误,只检查具有setter方法的属性。
对于注解来说没什么用,简单介绍一下
1 | <bean id="test"/> |
dependency-check
配置检查类型,一共有4种:null,object,simple,all
null=不检查,为默认配置。
object=检查除基本类型外的依赖对象。
simple=对基本类型进行依赖检查,包括数组类型,其他依赖不报错;
all=所有类型都检查
之前使用Hexo在各个平台搭建了一遍博客,最后发现,最好的办法是,本地搭建Hexo,编译文件后的文件放在git上,在克隆一个仓库到自己的服务器上,最后在自己的服务器上跑一个Nginx ,代理静态文件就行了。
折腾了老么久。
至于Nginx是什么,我就一句话:老牛逼的反向代理了,还能做负载均衡啥的。
假设你在自己电脑上已经搭建好了Hexo 并且已经上传到了Github上。现在教你怎么让自己的服务器运行自己的博客
步骤如下
- 第一步:安装Nginx
- 第二步:克隆Git仓库到服务器
- 第三步:修改Nginx配置文件,重启Nginx
pcre是正则兼容包,可以让Nginx 支持Http Rewrite模块
CentOS 安装方法
1
yum install pcre pcre-devl -y
支持HTTPS
CentOS 安装方法1
yum install openssl opnessl-devel -y
创建用户1
useradd -s /sbin/nologin -M nginx
下载Nginx 解压
整体步骤先写一下
1 | npm -version |
会有版本号显示
先去下载mysql-5.7.9-osx10.9-x86_64.dmg
安装(一直下一步,输入密码即可)mysql-5.7.9-osx10.9-x86_64.pkg好了,启动MySQL服务.
坑开始了
mysql指令不识别
1 | $ mysql |
root用户初始密码不给力
1 | Access denied for user 'root'@'localhost' (using password: YES) |
链接不上mysql
1 | Access denied for user 'root'@'localhost' (using password: NO) |
你以为OK了?错!
1 | You must reset your password using ALTER USER statement before executing this statement. |