首页 > 其他分享 >03Spring入门

03Spring入门

时间:2022-08-26 16:56:17浏览次数:44  
标签:入门 System println org 03Spring import public out

Spring IoC

Inversion of Control
控制反转
主要靠依赖注入实现
IoC容器是实现依赖注入的关键

bean调用

示例:
在test中添加注解:@ContextConfiguration(classes = CommnunityApplication.class) //启用CommunityApplication作为配置类

创建dao目录

package com.newcoder.community.dao;

public interface AlphaDao {
    public String select();
}

package com.newcoder.community.dao;

import org.springframework.stereotype.Repository;

@Repository //让容器能扫描到
public class AlphaDaoHibernateImpel implements AlphaDao{
    @Override
    public String select() {
        return "Hibernate";
    }
}

test类中

package com.newcoder.community;

import com.newcoder.community.dao.AlphaDao;
import org.junit.jupiter.api.Test;
import org.springframework.beans.BeansException;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.test.context.ContextConfiguration;

@SpringBootTest
@ContextConfiguration(classes = CommnunityApplication.class) //启用CommunityApplication作为配置类
class CommnunityApplicationTests implements ApplicationContextAware {

    private ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }

    @Test
    public void testApplicationContext() {
        System.out.println(applicationContext);

        AlphaDao alphaDao = applicationContext.getBean(AlphaDao.class);
        System.out.println(alphaDao.select());
    }
}

运行测试程序

当有两个类实现同一个接口,需要再使用的类添加@Primary注解

package com.newcoder.community.dao;

import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Repository;

@Repository
@Primary
public class AlphaMybatisImpel implements AlphaDao{

    @Override
    public String select() {
        return "Mybatis";
    }
}

或者修改bean名字

@Repository("alphaHibernate")
alphaDao = applicationContext.getBean("alphaHibernate",AlphaDao.class);
        System.out.println(alphaDao.select());

bean的初始化与销毁

创建Service包

package com.newcoder.community.service;

import com.newcoder.community.dao.AlphaDao;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.security.PublicKey;

@Service
public class AlphaService {
    public AlphaService() {
        System.out.println("实例化AlphaService");
    }

    @PostConstruct
    public void init() {
        System.out.println("初始化AlphaService");
    }

    @PreDestroy
    public void destroy() {
        System.out.println("销毁AlphaService");
    }
}

单独写一个测试方法

 @Test
    public void testBeanManagement() {
        AlphaService alphaService = applicationContext.getBean(AlphaService.class);
        System.out.println(alphaService);
    }

运行

注意:默认为单例模式(singleton) 若要改成多例模式需要加入在Service@scope(“prototype”)注解

配置第三方Bean

创建Config包

package com.newcoder.community.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.text.SimpleDateFormat;
@Configuration
public class AlphaConfig {

    @Bean
    public SimpleDateFormat singleDateFormat() {
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    }
}

再写一个测试方法

 @Test
    public void testBeanConfig() {
        SimpleDateFormat simpleDateFormat = applicationContext.getBean(SimpleDateFormat.class);
        System.out.println(simpleDateFormat.format(new Date()));
    }

运行

依赖注入

@Autowired
    @Qualifier("alphaHibernate")
    private AlphaDao alphaDao;

    @Autowired
    private AlphaService alphaService;

    @Autowired
    private SimpleDateFormat simpleDateFormat;

    @Test
    public void testDI() {
        System.out.println(alphaDao);
        System.out.println(alphaService);
        System.out.println(simpleDateFormat);
    }

依赖注入整合

浏览器通过controller发球请求,service处理业务,dao与数据库交互返回数据
service中注入dao,通过find方法获取dao的数据

 @Autowired
    private AlphaDao alphaDao;
    
    public String find() {
        return alphaDao.select();
    }

在controller中获取service返回的数据

 @Autowired
    private AlphaService alphaService;
    
    @RequestMapping("/data")
    @ResponseBody
    public String getData() {
        return alphaService.find();
    }

打开http://localhost:8081/community/alpha/data

标签:入门,System,println,org,03Spring,import,public,out
From: https://www.cnblogs.com/hjy94wo/p/16628023.html

相关文章

  • 【尚硅谷】SpringBoot2零基础入门教程(spring boot2干货满满)雷神讲授
    https://www.bilibili.com/video/BV19K4y1L7MT?spm_id_from=333.337.search-card.all.click&vd_source=b0cee746b0adbaa67743475d986bd0f8P1: P2:spring生态圈<--1:1......
  • 02Spring Boot入门
    创建Controller添加注解和方法packagecom.newcoder.community.controller;importorg.springframework.stereotype.Controller;importorg.springframework.web.b......
  • mp入门教程和api的入门使用
    一、MyBatisPlus简介1.入门案例问题导入MyBatisPlus环境搭建的步骤?1.1SpringBoot整合MyBatisPlus入门程序①:创建新模块,选择Spring初始化,并配置模块相关基础信息②......
  • 【超详细】Apache Durid从入门到安装详细教程
    1.Durid概述ApacheDruid是一个集时间序列数据库、数据仓库和全文检索系统特点于一体的分析性数据平台。本文将带你简单了解Druid的特性,使用场景,技术特点和架构。这将......
  • Java Servlet 入门: 重复注解的使用。
    刚好需要用到重复注解:下面进行示例使用:1、先正常定义一个注解:@Retention(value=RetentionPolicy.RUNTIME)@Target(value={ElementType.METHOD})@Inheritedpubl......
  • 状态压缩 DP 学习笔记【入门篇】
    前言状态压缩DP,简称状压DP。之前一直觉得状压特别难,学了一下,发现基本形态挺简单的。在学习之前,你需要掌握:简单DP(如线性DP,背包)基本二进制运算:&运算、|运算、\(......
  • Java -> Stream入门
    学习Stream的目的函数式编程渐渐变成主流,为了看懂同事的代码。相对于传统的编程方式,代码更为简洁清晰易懂。使得并发编程变得如此简单。有效的避免了代码嵌套......
  • 05.爬虫入门笔记1
    入门爬虫笔记011.request库的使用使用request库的get方法importrequestr=request.get('www.baidu.com')这会得到一个Response对象,将其存入变量r。显示得到的......
  • RabbitMQ 入门系列:5、基础编码:交换机的进阶介绍及编码方式。
    系列目录RabbitMQ入门系列:1、MQ的应用场景的选择与RabbitMQ安装。RabbitMQ入门系列:2、基础含义:链接、通道、队列、交换机。RabbitMQ入门系列:3、基础含义:持久化......
  • windows下的Sonarqube+Sonar-Scanner简单入门配置
    参考:https://blog.csdn.net/weixin_40496191/article/details/120250953https://www.cnblogs.com/longpizi/p/12376500.htmlsonar文档:https://docs.sonarqube.org/lates......