概述

开发三层架构,web层 service服务层,dao持久层。

web层struts2配置核心过滤器/*,通过拦截器调用目标action,action中调用service层开启事务。

service业务层层用spring框架,进行增删改查用事务,Bean管理:IOC(控制反转)AOP(面向切面进行操作)

dao持久层完成持久化操作,配置对应sql语句与数据库中对象的映射关系,操作数据库。

----------------------------------------------------------------------------------

//编写测试程序,采用Spring框架的工厂方式来获取到UserService接口的具体实现类

public void demo2(){
// 使用Spring的工厂:
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
// 通过工厂获得类:
UserService userService = (UserService) applicationContext.getBean("userService");//得到工厂里面bean对应id的值
userService.sayHello();//接口对应实现类的方法
}

   ApplicationContext接口,一加载对应的接口
        * 使用ApplicationContext工厂的接口,使用该接口可以获取到具体的Bean对象
        * 该接口下有两个具体的实现类
            * ClassPathXmlApplicationContext            -- 加载类路径下的Spring配置文件*****
            * FileSystemXmlApplicationContext            -- 加载本地磁盘下的Spring配置文件//不常用

核心

1. IOC和DI的概念
        * IOC        -- Inverse of Control,控制反转,将对象的创建权反转给Spring!!
        * DI        -- Dependency Injection,依赖注入,在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件中!!
    
    2.  DI(依赖注入)
        * 例如:如果UserServiceImpl的实现类中有一个属性,那么使用Spring框架的IOC功能时,可以通过依赖注入把该属性的值传入进来!!
        * 具体的配置如下

<bean id="us" class="com.itheima.demo1.UserServiceImpl">
<property name="uname" value="小风"/>
</bean>

  

**技术分析之Spring框架的属性注入**
    
    1. 对于类成员变量,常用的注入方式有两种
        * 构造函数注入
        * 属性setter方法注入
    
    2. 在Spring框架中提供了前两种的属性注入的方式
        1. 构造方法的注入方式,两步
            * 编写Java的类,提供构造方法

      public class Car {
private String name;
private double money;
public Car(String name, double money) {//这是构造方法
this.name = name;
this.money = money;
}
@Override
public String toString() {
return "Car [name=" + name + ", money=" + money + "]";
}
}

  

* 编写配置文件

 <bean id="car" class="com.itheima.demo4.Car">
<constructor-arg name="name" value="大奔"/>
<constructor-arg name="money" value="100"/>
</bean>

  

2. 属性的setter方法的注入方式
            * 编写Java的类,提供属性和对应的set方法即可

public class Car2 {

	private String cname;
private Double price; public void setCname(String cname) {
this.cname = cname;
} public void setPrice(Double price) {
this.price = price;
}
@Override
public String toString() {
return "Car2 [cname=" + cname + ", price=" + price + "]";
}
}

  

* 编写配置文件

//采用set方法注入
<bean id="car2" class="com.itheima.demo4.Car2">
<property name="cname" value="二八自行车"/>
<property name="price" value="1000"/>
</bean>

  

3. 如果Java类的属性是另一个Java的类,那么需要怎么来注入值呢?
            * <property name="name" ref="具体的Bean的ID或者name的值"/>
            * 例如:

   <bean id="person" class="com.itheima.demo4.Person">
<property name="pname" value="美美"/>
<property name="car2" ref="car2"/>
</bean>

  

如果是list集合:

<bean id="collectionBean" class="com.itheima.demo5.CollectionBean">
<property name="arrs">
<list>
<value>美美</value>
<value>小风</value>
</list>
</property>
</bean>

  

---------------------------------------------------------------------------------------------------------

Spring Day 1的更多相关文章

  1. 基于spring注解AOP的异常处理

    一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...

  2. 玩转spring boot——快速开始

    开发环境: IED环境:Eclipse JDK版本:1.8 maven版本:3.3.9 一.创建一个spring boot的mcv web应用程序 打开Eclipse,新建Maven项目 选择quic ...

  3. Spring基于AOP的事务管理

                                  Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...

  4. [Spring]IoC容器之进击的注解

    先啰嗦两句: 第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还是github的样式比较顺眼. 概述 Spring2.5 引入了注解. 于是,一个问题产生了:使用注解方式注入 JavaB ...

  5. 学习AOP之透过Spring的Ioc理解Advisor

    花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...

  6. 学习AOP之深入一点Spring Aop

    上一篇<学习AOP之认识一下SpringAOP>中大体的了解了代理.动态代理及SpringAop的知识.因为写的篇幅长了点所以还是再写一篇吧.接下来开始深入一点Spring aop的一些实 ...

  7. 学习AOP之认识一下Spring AOP

    心碎之事 要说知道AOP这个词倒是很久很久以前了,但是直到今天我也不敢说非常的理解它,其中的各种概念即抽象又太拗口. 在几次面试中都被问及AOP,但是真的没有答上来,或者都在面上,这给面试官的感觉就是 ...

  8. 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

    今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...

  9. Spring之旅(2)

    Spring简化Java的下一个理念:基于切面的声明式编程 3.应用切面 依赖注入的目的是让相互协作的组件保持松散耦合:而AOP编程允许你把遍布应用各处的功能分离出来形成可重用的组件. AOP面向切面 ...

  10. Spring之旅

    Java使得以模块化构建复杂应用系统成为可能,它为Applet而来,但为组件化而留. Spring是一个开源的框架,最早由Rod Johnson创建.Spring是为了解决企业级应用开发的复杂性而创建 ...

随机推荐

  1. ppt制作动态表格与文字

          在工作中经常与ppt打交道的小伙伴们,是不是非常想让自己做的ppt图表能够动起来,显得高大上一点呢?比如让柱形图慢慢长起来,让折线图慢慢画出来,让文字像字幕一样缓缓上升?本文将给大家整理几 ...

  2. [smf]smf论坛也很漂亮

    smf论坛代码国内使用的比较少,可能是大家习惯了dz论坛的互动方式吧!但是,smf论坛系统不失为一款好的论坛系统,也是目前为数不多的开源代码.使用起来之后,你会体会到它强大的后台操作.(例如:插件的安 ...

  3. Python ImportError: No module named 'requests'的解决方法

    import requests报错 Python ImportError: No module named 'requests'可能是requests没有安装 安装流程 1.cmd 2.cd D:\p ...

  4. Python 基础整理(未完)

    数据类型和变量: 整数:Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等. 计算机由于使用二进制,所以,有时候用十六 ...

  5. 初学mybatis和mysql碰到的问题

    今天学习了下使用mybatis操作数据库,期间也是各种问题出现,幸好现在网络发达,网络上很多都可以解决,现在总结一下: Exception in thread "main" org ...

  6. Linux下MySQL数据库的安装

    记录详细过程以备使用 1.创建群组及用户 obd:~ # groupadd mysql obd:~ # useradd -g mysql mysql 2.创建相关目录 obd:~ # mkdir -p ...

  7. 轻松读懂IL

    轻松读懂IL先说说学IL有什么用,有人可能觉得这玩意平常写代码又用不上,学了有个卵用.到底有没有卵用呢,暂且也不说什么学了可以看看一些语法糖的实现,或对.net理解更深一点这些虚头巴脑的东西.最重要的 ...

  8. 一篇入门 — Scala 宏

    前情回顾 上一节, 我简单的说了一下反射的基本概念以及运行时反射的用法, 同时简单的介绍了一下编译原理知识, 其中我感觉最为绕的地方, 就属泛型的几种使用方式了. 而最抽象的概念, 就是对于符号和抽象 ...

  9. FineCMS 5.0.10 多个 漏洞详细分析过程

    0x01 前言 已经一个月没有写文章了,最近发生了很多事情,水文一篇.今天的这个CMS是FineCMS,版本是5.0.10版本的几个漏洞分析,从修补漏洞前和修补后的两方面去分析. 文中的evai是特意 ...

  10. 移动web-bootstrap

    1bootstarp布局容器+栅格系统的使用 1.101-移动web-bootstrap中的布局容器 1.container和container-fluid的区别? a) container      ...