3109人加入学习
(9人评价)
SSM框架第二季 - Spring入门

制作完成于2018-09-06 使用Eclipse-4.7.3a、JDK8、Spring-5.0.8、Mybatis-3.4.6

价格 免费

09:04

因为xml文件中配置service的时候需要ad,u而就是AccountDao,所以需要渠道AccountServiceImpl.java中给ad一个set方法。

[展开全文]

事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)

以事务方式运行,是说如果执行多条SQL语句,则要么都成功,要么都失败
以非事务方式运行,是说如果执行多条SQL语句,彼此没有关系

例如
执行以下三条语句
SQL1
SQL2
SQL3
执行三条语句是1、2成功了,3失败了
如果是事务方式:则1、2的执行结果会被撤销,即三条语句都不成功
如果是非事务方式:则1、2执行成功,3失败!

[展开全文]

利用spring(xml文件)读取外部db.properties

[展开全文]

弄清楚依赖关系,然后从后往前进行配置。

[展开全文]

07:32

33行代码:泛型为返回值:User

new BeanHandler在dbutils中自动配置好,而RowMapper在JdbcTemplate中需要手动配置:如38行-46行;

[展开全文]

*com.sikiedu.service.*ServiceImpl.*(...)

第一个*表示对返回值不做要求,可以用*代替void等。(权限默认为public,所以public可以省略)

第二个*表示要增强service包下所有以ServiceImpl结尾的实现类;

第三个*表示增强类下的所有方法;

...:参数了类型有可能不同,数量可能不止一个,所以可以用...代替。

[展开全文]

aop里面用到的名词:

JoinPoint连接点:哪些方法会被拦截?被增强的方法都会被拦截;

PointCut切入点:假如我想增强save方法,save方法就是切入点;

Advice:通知/增强(在编译前加入),他是我们代理代码中的:

Introduction:介入/引入(在编译执行期加入),运行时加入的方法或行为;

Aspect:切面,通知+切入点,将会通知应该应用到哪个切入点;

target:目标,被代理的对象,比如上图中的UserServiceImpl;

weaving:织入, 把切面的代码应用到目标对象来创建新的代理对象的过程;例如图中:把“开启事务”放在save方法的前面,把“提交/回滚”放在save方法的后面。

proxy:代理,把切面的代码应用到目标对象来创建新的代理对象;

也就是说,通过weaving这个过程,它会生成一个新的增强后的代理对象。

[展开全文]

07:54

new一个handler去实现这个接口

 

在Object invoke中,第一个参数可以当成无效(不看),method表示调用原始的方法,首先把args也就是要用的参数调用进去(进而把invoke中的arg1变成args),arg0表示被代理对象,需要传递进去,也就是us。

[展开全文]

过滤器体现了aop思想:

纵向重复的代码:身份验证,利用过滤器横向抽取重复的代码出来:

[展开全文]

每次请求都会创建一个新的容器,但是在web项目中我们只需要一个spring的容器。所以我们开始了“配置Spring随项目启动”:

 

[展开全文]

利用

@Run with(SpringJUnit4ClassRunner.class)//使用junit进行测试,帮我们创建容器

@ContextConfiguration("classpath:applicationContext_Injection.xml")//读取配置文件

两处注解,可以解决日后有太多test导致新建容器代码重复过多

 

以防注解较多,可以利用在一个xml文件中引入另一个xml文件,从而使用另一个xml文件中的bean或其他标签。5:40

[展开全文]

利用@Value这个注解完成对属性值的注入

注:建议在set方法上面对属性值的注入,因为直接在private前面注入的话,也就是在引入字段的前面注入,会破坏这个字段的应用范围(private、public),这个时候其实用的是暴力反射注入。

[展开全文]

注解开发:(可以通过注解把一个xml文件的标签用到另一个xml的java文件中)

解释:图中@Scope中,scope标签属于applicationContext.xml文件,但是这里运用注解的方式把它用到applicationContext_annotation.xml。

 

但是在视频的09:40中,要用useInit,要找到UseInit方法并在上面进行注解:

 

 

 

开启组件扫描的时候,需要传递一个包,它会扫描这个包中以及子包的所有类的注解。

 

要将User2交给spring管理:

@Controller() //对应web层

@Service()  //对应service层

@Repository()  //对应dao层

 

 

[展开全文]

要想运行destroy-method方法,必须待容器关闭后方可:

init-method与destroy-method的使用:

 一般用于后续代码项目开发的时候需要在bean中做一些初始化和销毁的逻辑。

但是如果scope是多例prototype,那么spring容器在创建完之后就会交给你管理,spring不会帮你进行管理,进而destroy不会执行。

 

init-method:容器创建对象之后立刻调用初始化fang'fa;destroy-method:容器销毁对象之前调用的方法。

[展开全文]

1.单例:scope=“singleton”

2.多例:scope=“prototype”3.scope=“request”:request在web环境下,如果scope属性为request,那么这个对象被创建出来后,它的生命周期会与request请求一致(request请求完毕之后对象才会被释放)

4.scope=“session”:生命周期会与session请求一致

[展开全文]

 

解决因为bean较多而造成内存过大的问题:

 

[展开全文]

授课教师

SIKI学院老师

课程特色

下载资料(1)
视频(36)