美文网首页
Spring 入门

Spring 入门

作者: 张远YZ | 来源:发表于2018-12-10 19:02 被阅读0次

  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来配置


相关文章

网友评论

      本文标题:Spring 入门

      本文链接:https://www.haomeiwen.com/subject/ytgwcqtx.html