springBoot框架(一定程度上取消xml配置,默认优于配置,简化了springMvc的配置流程,和前端解耦)
相对于springMvc框架来说,更专注于开发微服务后台接口,不开发前端视图
注入,也就是加载bean时,对变量(类)的赋值(实例化)
bean就是的对象,可以被spring实例化,配置并加载<bean>(也就是实例化对象)
①:xml方式的实现,加载xml文件
②:注解方式的实现
bean生命周期:
让 init 初始化时调用:xml配置bean的 init-method="init"
让 cleanup 销毁时调用:xml配置bean的 destory-method="cleanup"
实现Aware接口:用于获得Spring的东西,如ApplicationContextAware接口,可以实现以获得ApplicationContext
spring 版本:1.xml,2.@+xml,3.全@
AOP
作用:在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。生产中例子如事务、安全、日志(*),用声明的方式一次性配好,之后漫漫长夜专注于写业务代码就行了,不再为这些事而烦。
Spring实现的AOP是代理模式,给调用者使用的实际是已经过加工的对象,你编程时方法体里只写了A,但调用者拿到的对象的方法体却是xAy。
切入到指定类指定方法的代码片段称为 切面Aspect
而切入到哪些类、哪些方法则叫 切入点PointCut
x和y要干啥总还是需要你来写的,这就是 增强(Advice)
ApplicationContext.getResource(“地址”)
new FileSystemResource(“文件地址”);
new ClassPathResponse(“类路径”);
用web工程来实例化SpringIOC容器用的就是一个web.xml中的监听器listener
整合Struts2:
(关键在于Struts2中的Action如何纳入Spring容器的管理成为一个Bean)
struct.xml中直接使用applicationContext.xml中定义的bean的id来作为它action的class
在配置了如上配置后,Action的产生就不再由Struts2处理,而由Spring处理
整合Hibernate
//由于Hibernate的sessionFactory在整个应用中只需初始化一次
//在applicationContext.xml中定义的bean,以下bean的class是专门用了创建Hibernate的sessionFactory的
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<!--指定hibernate配置文件的路径-->
<property name="configLocation">
<value>classpath:config/hibernate.cfg.xml</value>
</property>
</bean>
//主java
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");//获得类路径下(src下)的Beans.xml
HelloWorld obj = (HelloWorld) context.getBean("helloWorld");//根据bean的id获取bean,即实例化类
obj.getMessage();
}
//Bean.xml
<beans>
<bean id="helloWorld" class="com.tutorialspoint.HelloWorld">
<property name="message" value="Hello World!"/>//实例化message的值为"Hello World!"
</bean>
</beans>
//HelloWorld.java
public class HelloWorld {
private String message;
public void setMessage(String message){//要有这个方法bean.xml中才能给message设值(注入)
this.message = message;
}
@Controller负责注册一个bean 到spring 上下文中
@RequestMapping注解为控制器指定可以处理哪些 URL 请求
@RequestBody该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上 ,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上
@ResponseBody该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区
@RequestMapping简写方法级别的注解变体有如下几个: @GetMapping @PostMapping @PutMapping @DeleteMapping @PatchMapping
如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面
@RestController的意思就是controller里面的方法都以json格式输出,不用再写什么jackjson配置的了!
@Repository用于DAO类持久层
@Autowired 自动注入
@Component的儿子们:
@Controller,
@Service,告诉spring创建一个实现类的实例@Service("student"),括号里面就是给实例化后的Student对象取个名字@Repository
@PostConstruct 和 @PreDestroy 用于bean 的生命周期。类似于xml里配置bean的属性:init-method(InitializeingBean) destory-method(DisposableBean)
@Documented :表示注解是否能被 javadoc 处理并保留在文档中