Spring 入门

  Spring是一种非侵入式框架

飞侵入式

对现用功能没有影响,能够增强JavaBean的功能

松耦合

前面我们写程序的时候,都是面向接口编程,通过DaoFactory等方法实现松耦合。即减少模块间的关联性

Dao层和Service层通过DaoFacotry来实现松耦合,如果Service层直接new DaoBook(),那么Dao和Service层就是关联性紧,即紧耦合。

在Spring层可以 private BookDao bookDao = DaoFacotry.getInstance().createDao("zhonggong.dao.impl.userDaoimp",OrderDao.class);     @Override                                                                                                                                  @Permission("添加分类")                                                                                                         /*添加分类*/public void addCategory(Category category){cateGoryDao.addCategory(category);}

Spring中提供了IOC控制反转来松弛模块之间的关联度。在采用面向对象设计的系统中,所有对象通过彼此的合作,最终通过系统的业务逻辑,即软件系统中对象之间的互相合作来形成业务逻辑。而IOC是将复杂的系统分解为相互合作的关系.


把各个部分封装之后,通过IOC容器来关联这些对象。这称为控制反转,又叫依赖注入

切面编程也是AOP编程,动铁编程也是一种切面编程

动态代理+注解的方法给Service添加权限

Controller调用Service的时候,Service返回的是一个代理对象。

代理对象得到Controller想要的方法的时候,通过反射来看该方法有没有注解

如果有注解,就判断该用户是否有权限来调用改方法,没有权限则抛出给controller,controlller得到没有权限异常就可以对用户进行提示

AOP:在执行某些代码前,执行另外的代码

struct2的拦截器也是面向切面拦截

action:多个,访问时创建,依赖service

service:一个,不需要维护公共变量,启动时创建,依赖dao

dao:一个,启动时创建

注释:@Controller 数据经过业务处理逻辑后封装成一个model,然后再返回给View进行展示

在SpringMVC中提供了一个简便的定义Controller的方法,你无需继承特定的类或者接口,只需要使用Controller 标记一个controller 

@RequestMapping 注解,

作用域@Scope prototype request session global session

自动装配@Autowired

@Component:标准一个普通的spring Bean类。

@Controller:标注一个控制器组件类。

@Service:标注一个业务逻辑组件类。

@Repository:标注一个DAO组件类。

@Runwith()是一个运行器,括号里跟Unit4.class Suite.class

@ContextConfiguration Spring整合多个Utnit4测试的时候,使用注解引入多个配置文件

单个文件:

@ContextC2            onfigruation(Locations="classpath:applicationContext.xml)

@ContextConfiguration(locations = { "classpath:spring1.xml", "classpath:spring2.xml" }) 

@Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。

@Scope注解 作用域

@Lazy(true) 表示延迟初始化

@Service用于标注业务层组件、 

@Controller用于标注控制层组件(如struts中的action)

@Repository用于标注数据访问组件,即DAO组件。

@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

@Scope用于指定scope作用域的(用在类上)

@PostConstruct用于指定初始化方法(用在方法上)

@PreDestory用于指定销毁方法(用在方法上)

@DependsOn:定义Bean初始化及销毁时的顺序

@Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常

@Autowired 默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:

@Autowired @Qualifier("personDaoBean") 存在多个实例配合使用

@Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。

@PostConstruct 初始化注解

@PreDestroy 摧毁注解 默认 单例  启动就加载

@Async异步方法调用

bean.xml:<context:compnent-scan base-package="com.kn.beanScope">

@Component//标注这是一个普通的BEAN文件

public void sout(){

             System.out.println("????THIS is OH Data!");

}


BeanScope.java,中scope设定定义域,每次新建自身实例

@Component

@Scope("prototype")

public class BeanScope(){

      @Autowired

      private OH oh;

      private String beanname;

}

UserAxeTest

 ApplicationContext ctx = new ClassPathXmlApplication("bean_zj.xml");

BeanScope beanscope = ctx.getBean("beanscope",BeanScope.class);

beanScope.init();

BeanScope.beanscope1=ctx.getBean("beanScope",BeanScope.class);

获取两次 beanScope 然后 第一次先调用init 再say,第二次 直接say

Spring的Datasource多循环问题:1、准备依赖 2.token从以前的数据库移除了,移到了redis端

maven repository:maven中央仓库

  链接打开后如下:


  那么怎么使用这个网站呢?

  举例,我需要写一个java发送邮件的功能,需要java.mail的jar包。那么我直接在搜索框中输入:mail,搜索结果如下:

  如图,我们看到了前两个选项:JavaMail API JAR和JavaMail API(compat)。

  按照惯例选择usages最多的那个,也就是javaMail API(compat),点击打开。

  然后在下面的version里面选一个,比如1.4.7。

https://mvnrepository.com/

  将下面的xml代码复制到你的pom.xml中即可。

Spring Web Spring对web模块的支持。

                可以与struts整合,让struts的action创建交给spring

                spring mvc模式

Spring DAO Spring 对jdbc操作的支持 【JdbcTemplate模板工具类】

Spring ORM spring对orm的支持:

既可以与hibernate整合,【session】

也可以使用spring的对hibernate操作的封装

Spring AOP 切面编程

SpringEE spring 对javaEE其他模块的支持

依赖注入:甲方开放接口时,乙方可以传递进来控制反转,

甲乙双方不相互依赖,交易活动时不依赖甲乙任何一方,整个活动不依赖甲乙任何一方,整个活动由第三方解决

单例的好处:效率高,不浪费空间。方便单元测试,方便切换mock组件,方便于AOP操作,对于操作是透明的,统一配置,便于修改

Spring可以分成六大模块:spring core spring的核心,IOC:容器,解决对象创建以及依赖问题

spring web spring对web模块的支持,可以和struct融合,把struct的action交给Spring来创建

spring MVC模式,spring DAO spring对orm的支持,也可以和hibenate整合,也可以使用spring对hibernate操作的封装

Spring AOP的切面操作

SpringEE spring对JAVAEE其他模块的支持:Core模块快速入门

引入jar包:

本博文主要是core模块的内容,涉及到Spring core的开发jar包有五个

commons-logging-1.1.3.jar 日志

spring-beans-3.2.5.RELEASE.jar bean节点

spring-context-3.2.5.RELEASE.jar spring上下文节点

spring-core-3.2.5.RELEASE.jar spring核心功能

spring-expression-3.2.5.RELEASE.jar spring表达式相关表

Spring的核心配置文件是ApplicationContext.xml或者叫bean.xml,

core容器是ICO容器,能解决对象创建之间的依赖关系,IOC细节

得到Spring容器对象,IOC容器.000000

Spring容器不单单只是一个,可以归类为两种类型

Bean工厂,BeanFactory ( 功能简单)\

应用上下文,ApplicationContext(功能强大,一般我们使用这个)

通过Resource获得BeanFactory

加载Spring配置文件来创建IOC容器

类路径下XML获取ApplicationContext

直接通过ClassPathApplicationContext对象来获取

//得到IOC容器对象,ApplicationContext ac

=newClassPathXmlApplicationContext("applicationContext.xml");

System.out.println(ac;)

Spring中总可以通过三种方法来配置对象

使用XML来配置,使用注解来配置,使用JavaConfig来配置


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容