【JAVA】3 Spring

 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 处理并保留在文档中


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值