Spring学习01

1 篇文章 0 订阅

spring学习01

1.微服务*
2.反应式框架
3.云原生开发*
4.web应用
5.无服务器技术
6.事件驱动
7.批处理

project(Java开发各个方面)

  • framework
  • boot
  • data 处理数据
  • cloud 云原生
  • security 安全管理
  • session 共享会话
  • integration 集成
  • Hateoas 媒体服务
  • rest docs 文档
  • Batch 批处理
  • CredHub
  • Statemachine 状态机
    -…

IOC

控制反转,如何使用对象管理对象
将对象的创建,属性赋值,对对象申明交给容器管理
分为控制和反转
控制:对象创建,属性赋值,对象声明生命周期
反转:管理对象的权限由容器完成
正转:通过new构造方法创建对象,由开发人员控制

通过容器使用容器中的对象。
技术实现
DI注入
依赖注入

public class A{
}
public class B{
	private B=new B();
}
即通过这个类获取另一个类的内容

spring 通过反射机制创建对象

spring配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans   
 http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
根标签是beans
beans后面是约束文件内容
beans里面放置bean声明
什么是bean---由spring容器管理的Java对象,叫做bean
(Java反射)

容器对象ApplicationContext:接口

1.spring默认调用无参构造方法创建对象
2.读取配置文件时,一次创建好所有的Java对象,都放在map中。

D!给属性赋值

1)xml配置文件的标签和属性
		1.set注入,spring调用set方法
		2.构造注入
			<bean id="" class="">
				<constroctor arg name=" " value=" "></constroctor arg>
			</bean>
			引用 rel=" "
			
2)基于注解
	1.Component(相当于bean标签)
		xml中加入组件扫描器
	2.@Repository :放在dao接口的实现类上,表示创建DAO对象,持久层对象,可以访问数据库
	3.@Service:   放在业务层接口的实现类上,表示创建业务层对象,业务层对象有事务的功能。
	4.@Controller:放在控制器类的上面,表示创建控制器对象,属于表示层对象,可以接收请求,可以将请求结果显示给用户。
	以上四个注解都可以创建对象,但其他三个有角色说明,表示对象是分层的,有额外功能。
	赋值
	@Value
	@Autowird 给引用类型赋值
	@Qualifer
	@Resource byName自动注入

AOP

面向切面编程:
原来问题:
1.源代码可能改动较多
2.重复代码比较多
3.代码难以维护

作用

aspect orient programming:面向切面编程
给方法增加的非业务功能
一般功能都可以复用。日志功能,事务功能,权限检查,参数检查,统计信息
理解方式:
1.设计项目时,找出切面的功能
2.切面功能执行的时间与位置。
(1)让切面功能复用
(2)让开发人员专注业务逻辑,提高开发效率
(3)实现各个功能解耦合
(4)给存在业务功能增加功能,不用修改原来代码

术语

1.切面 aspect
2.连接点 joinPoint 连接切面的业务方法,在这个方法执行时,会执行这个切面功能
3.切入点 Pointcut 是一个或多个连接点的集合。表示这些方法执行时,能增加切面的功能,表示切面执行的位置
4.目标对象 target 
5.通知 advice (增强) 表示切面执行时间是目标方法之前还是之后
在advice时间,在pointcut的位置,执行aspect

一个动态思想,在程序运行期间,创建代理,在代理执行时,增加切面功能。
给某些方法增加相同的功能。源代码不更改。

实现方式

框架 : 
1.spring 实现部分功能,操作比较繁琐
2.Aspectj:独立框架,专门AOP ,属于Eclipse

具体操作

1.通知

表示切面时间时间,用的advice,可以用 注解表示 或 xml配置文件 方式
五个注解:
1.@Before
2.@AfterReturning
3.@Around
4.@AfterThrowing
5.@After

2.PowerCut位置

表示切面执行位置
使用Aspectj中切入点表达式
语法
execution(访问权限类型?返回值类型 包名类名?方法名(参数) 抛出异常类型?)	;不加?表示必须有
加入依赖
	spring-context
	spring-aspects

MyBaties(数据操作框架)

1.依赖

	spring依赖
	mybaties依赖
	mysql驱动
	junit依赖

2.配置文件

1.声明数据源,使用阿里druid连接池
2.声明SqlSessionFactoryBean类
3.声明MapperScannerConfiguration类,内部创建dao代理对象
4.声明service对象

hibernate (数据操作框架)

暂无

MVC(Web开发)

本质是servlet
由前端控制器统一处理DispatcherServlet
1.配置web.xml

两种方式
1.默认方式
  <servlet>-->
   <servlet-name>SpringMVC</servlet-name>-->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>-->
  </servlet>-->
  <servlet-mapping>-->
    <servlet-name>SpringMVC</servlet-name>-->
    <url-pattern>/</url-pattern> -->
</servlet-mapping>-->
2.扩展方式
<servlet>
  <servlet-name>springMVC</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--  配置SpringMVC配置文件的位置和名称-->
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:springMVC.xml</param-value>
  </init-param>
<!--  提前初始化时间-->
  <load-on-startup>1</load-on-startup>
</servlet>
  <servlet-mapping>
    <servlet-name>springMVC</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

配置视图解析器

<!--    配置Thymeleaf试图解析器-->
    <bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
        <property name="characterEncoding" value="UTF-8"/>
<!--        模板-->
        <property name="templateEngine" >
            <bean class="org.thymeleaf.spring5.SpringTemplateEngine">
                <property name="templateResolver">
                    <bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
<!--                        试图前缀-->
                        <property name="prefix" value="/WEB-INF/templates"/>
<!--                        视图后缀-->
                        <property name="suffix" value=".html"/>
                        <property name="templateMode" value="HTML5"/>
                        <property name="characterEncoding" value="UTF-8"/>
                    </bean>
                </property>
            </bean>
        </property>
        <property name="viewNames" value="th*,base/*"/>
        <property name="order" value="1" />

    </bean>

@RequestMapping注解

WebFlux (异步开发)

暂无

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nightelves11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值