最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springIoc及注解的使用實(shí)例詳解

 更新時(shí)間:2024年02月04日 10:54:44   作者:screamn  
注解(Annotation)是一種在 Java 程序中以元數(shù)據(jù)的形式對(duì)代碼進(jìn)行標(biāo)記和說(shuō)明的機(jī)制,它可以被添加到類、方法、字段、參數(shù)等程序元素上,用于提供額外的信息和指示,本文給大家介紹springIoc及注解的使用,感興趣的朋友一起看看吧

注解

注解的定義

注解(Annotation)是一種在 Java 程序中以元數(shù)據(jù)的形式對(duì)代碼進(jìn)行標(biāo)記和說(shuō)明的機(jī)制。它可以被添加到類、方法、字段、參數(shù)等程序元素上,用于提供額外的信息和指示。
也就是說(shuō)注解是一種標(biāo)記

注解怎么生效呢?

通過(guò)掃描的方式生效,spring容器進(jìn)行指定包下的文件掃描,然后根據(jù)注解進(jìn)行后續(xù)操作

注解的類型

  • 內(nèi)置注解(Built-in Annotations):Java語(yǔ)言提供了一些內(nèi)置的注解,用于標(biāo)記和處理特定的場(chǎng)景和行為。例如:
    • @Override:用于標(biāo)記方法覆蓋父類方法。
    • @Deprecated:用于標(biāo)記已過(guò)時(shí)的方法、類或字段。
    • @SuppressWarnings:用于抑制編譯器警告信息。
  • 元注解(Meta-Annotations):元注解是用于定義和處理注解本身的注解。它們可以用于 自定義注解,指定注解的行為、作用范圍等。常見(jiàn)的元注解包括:
    • @Target:指定注解可應(yīng)用的目標(biāo)元素類型(類、方法、字段等)。
    • @Retention:指定注解的保留策略(源代碼、編譯時(shí)、運(yùn)行時(shí))。
    • @Documented:指定注解是否包含在API文檔中。
  • 自定義注解(Custom Annotations):
    • 開(kāi)發(fā)者可以根據(jù)需要自定義自己的注解,以實(shí)現(xiàn)特定的功能和邏輯。自定義注解需要使用元注解來(lái)進(jìn)行配置,并通過(guò)反射機(jī)制來(lái)獲取注解信息。自定義注解可以應(yīng)用于類、方法、字段等代碼元素,并可以根據(jù)注解信息做出相應(yīng)的處理。

簡(jiǎn)單來(lái)說(shuō)內(nèi)置注解就是 Java語(yǔ)言提供的一些注解,不需要導(dǎo)依賴和導(dǎo)包使用。元注解也就是注解的注解 專門用來(lái)標(biāo)注注解,自定義注解 ,開(kāi)法者根據(jù)需要自定義自己的注解,也就是自己做的一些規(guī)定,通常需要導(dǎo)包進(jìn)行使用。

配置包掃描

<context:component-scan base-package="包名"/>

排除包下的一些信息

<context:exclude-filter type="annotion" expression="類的全限定符"/>

指定包含內(nèi)容

<context:include-filter type="annotion" expression="類的全限定符"/>

type="annotation" 表示使用注解作為過(guò)濾器的類型,它會(huì)匹配帶有特定注解的類進(jìn)行組件掃描。

bean的作用域和周期方法注解

定義

作用域指的是在Spring容器中管理的Bean對(duì)象的生命周期范圍和可見(jiàn)性。不同的作用域決定了在容器中創(chuàng)建的Bean實(shí)例的行為方式。
可以使用注解的形式進(jìn)行規(guī)定

在Spring框架中,常見(jiàn)的Bean作用域(scope)包括:

  • Singleton(單例):
  • 在整個(gè)應(yīng)用程序中只存在一個(gè)Bean實(shí)例,由Spring容器管理。每次請(qǐng)求該Bean時(shí),都會(huì)返回同一個(gè)實(shí)例。
  • Prototype(原型):每次請(qǐng)求該Bean時(shí),容器都會(huì)創(chuàng)建一個(gè)新的Bean實(shí)例,并返回該實(shí)例。
  • Request(請(qǐng)求):每個(gè)HTTP請(qǐng)求都會(huì)創(chuàng)建一個(gè)新的Bean實(shí)例,該實(shí)例僅在當(dāng)前請(qǐng)求中有效。
  • Session(會(huì)話):每個(gè)用戶會(huì)話都會(huì)創(chuàng)建一個(gè)新的Bean實(shí)例,該實(shí)例在整個(gè)會(huì)話期間有效。
  • GlobalSession(全局會(huì)話):僅適用于Portlet環(huán)境,表示全局會(huì)話作用域。

常用的生命周期方法注解包括:

周期的定義

周期(Lifecycle)指的是對(duì)象的創(chuàng)建、初始化、使用和銷毀過(guò)程中的各個(gè)階段。在Spring框架中,可以通過(guò)聲明周期方法注解來(lái)定義在Bean的生命周期中執(zhí)行的特定方法。

  • @PostConstruct:在Bean的初始化階段,即依賴注入完成后調(diào)用的方法上添加該注解。該方法會(huì)在構(gòu)造函數(shù)執(zhí)行之后、任何自動(dòng)裝配發(fā)生之前被調(diào)用。
  • @PreDestroy:在Bean銷毀之前調(diào)用的方法上添加該注解。該方法會(huì)在Bean被容器銷毀之前被調(diào)用。
  • 這兩個(gè)就類似于前面說(shuō)到的bean中的init-method 和destroy-method方法

這兩個(gè)就類似于前面說(shuō)到的bean中的init-method 和destroy-method方法

注解Autowired的使用

它是spring框架的注解,用于自動(dòng)裝配bean,使用Autowired注解可以簡(jiǎn)化依賴注入。當(dāng)創(chuàng)建一個(gè)Bean時(shí),會(huì)自動(dòng)檢測(cè)該Bean所需要的依賴,將其注入到Bean中

1.構(gòu)造方法注入:

在構(gòu)造方法上使用 @Autowired的話,spring會(huì)嘗試通過(guò)匹配類型或名稱來(lái)自動(dòng)注入構(gòu)造方法所需的依賴項(xiàng)

public class MyBean {
    private DependencyBean dependency;
    @Autowired
    public MyBean(DependencyBean dependency) {
        this.dependency = dependency;
    }
}

在上述示例中,MyBean 類的構(gòu)造方法使用了 @Autowired 注解,告訴 Spring 自動(dòng)注入 DependencyBean 對(duì)象。 自動(dòng)注入也就是說(shuō)會(huì)創(chuàng)建這個(gè)實(shí)例

2.成員變量注入:在成員變量上使用 @Autowired 注解,Spring 將會(huì)自動(dòng)注入與該成員變量類型匹配的 Bean 對(duì)象。

public class MyBean {
    @Autowired
    private DependencyBean dependency;
}

3.Setter 方法注入:
在 Setter 方法上使用 @Autowired 注解,Spring 將會(huì)自動(dòng)注入與該 Setter 方法參數(shù)類型匹配的 Bean 對(duì)象。

public class MyBean {
    private DependencyBean dependency;
    @Autowired
    public void setDependency(DependencyBean dependency) {
        this.dependency = dependency;
    }
}

4.方法注入:在普通方法上使用 @Autowired 注解,Spring 將會(huì)自動(dòng)注入與方法參數(shù)類型匹配的 Bean 對(duì)象。

public class MyBean {
    private DependencyBean dependency;
    @Autowired
    public void injectDependency(DependencyBean dependency) {
        this.dependency = dependency;
    }
}

在上述示例中,MyBean 類的 injectDependency() 方法使用了 @Autowired 注解,告訴 Spring 自動(dòng)注入與 DependencyBean 類型匹配的 Bean 對(duì)象。

舉例幫助理解

我們來(lái)學(xué)習(xí)一下上面這部分內(nèi)容的實(shí)際用處,以及為什么這樣做

1.構(gòu)造方法注入:
我們此時(shí)面臨一個(gè)場(chǎng)景,我想要在一個(gè)類中使用另一個(gè)類的實(shí)例,比如說(shuō)在動(dòng)物類中,使用鳥類的飛行方法,那么我可以在動(dòng)物類中創(chuàng)建一個(gè)鳥類的引用,通過(guò)Autowired注解注入,以達(dá)到在此類中實(shí)現(xiàn)鳥類的飛行方法。
如:我定義一個(gè)注入的類 三個(gè)私有化屬性 一個(gè)重寫的toString方法

@Component
public class DependencyBean {
    private String name;
    private Integer age;
    private String address;
    @Override
    public String toString() {
        return "DependencyBean{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                '}';
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
}

使用Autowired注解進(jìn)行注入

@Component
public class MyBean {
    private DependencyBean dependency;
    @Autowired //TODO 這個(gè)用法是什么呢?
    public MyBean(DependencyBean dependency) {
        this.dependency = dependency;
    }
    public String sing(){
        dependency.setAddress("地球");
        dependency.setAge(50);
        dependency.setName("張三");
        return dependency.toString();
    }
}

注入之后進(jìn)行使用

 class Test{
     public static void main(String[] args) {
         ApplicationContext applicationContext =
                 new ClassPathXmlApplicationContext("spring-ioc.xml");
         MyBean bean = applicationContext.getBean(MyBean.class);
         System.out.println(bean);
         System.out.println(bean.sing());
     }
}

結(jié)果:我可以不用創(chuàng)建這個(gè)注入的類的對(duì)象,使用Autowired會(huì)自動(dòng)幫助我創(chuàng)建

在這里插入圖片描述

2. 成員變量的注入:其余不改,僅更改MyBean內(nèi)容

@Component
public class MyBean {
    @Autowired
    private DependencyBean dependency;
    public String sing(){
        dependency.setAddress("地球");
        dependency.setAge(50);
        dependency.setName("張三");
        return dependency.toString();
    }
}

我們執(zhí)行之后得到的結(jié)果,可以發(fā)現(xiàn)注入的話會(huì)自動(dòng)創(chuàng)建一系列內(nèi)容。相當(dāng)于得到了實(shí)例

3.setter方法的注入

@Component
public class MyBean {
    private DependencyBean dependency;
    @Autowired
    public void setDependency(DependencyBean dependency) {
        this.dependency = dependency;
    }
    public String sing(){
        dependency.setAddress("地球");
        dependency.setAge(50);
        dependency.setName("張三");
        return dependency.toString();
    }
}

效果一樣

在這里插入圖片描述

4.在普通方法上使用

@Component
public class MyBean {
    private DependencyBean dependency;
    @Autowired
    public void injectDependency(DependencyBean dependency) {
        this.dependency = dependency;
    }
    public String sing() {
        dependency.setAddress("地球");
        dependency.setAge(50);
        dependency.setName("張三");
        return dependency.toString();
    }
}

結(jié)果仍一樣

在這里插入圖片描述

我們需要明白Autowired會(huì)根據(jù)你規(guī)定或者是表明的內(nèi)容進(jìn)行注入,從而得到對(duì)應(yīng)的bean對(duì)象或者是bean實(shí)例。這樣做的話簡(jiǎn)化了操作,讓我們實(shí)現(xiàn)起來(lái)更加的方便。

使用注解實(shí)現(xiàn)ioc容器管理

dao層,持久化儲(chǔ)存

package com.dao;
import com.pojo.Student;
import java.util.List;
public interface StudentDao {
    List<Student> queryAll();
}

實(shí)現(xiàn)

package com.dao;
import com.pojo.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class StudentDaoImpl implements StudentDao{
//    這個(gè)位置不可以直接使用注解 需要使用的時(shí) bean的依賴注入
   @Autowired
    private JdbcTemplate jdbcTemplate;
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
    @Override
    public List<Student> queryAll() {
        String sql = "select * from students ";
        List<Student> students = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(Student.class));
        return students;
    }
}

這里我們主要明確,由于JdbcTemplate這個(gè)內(nèi)容并不是我們創(chuàng)建的,這是根據(jù)需求導(dǎo)入的jar包,我們并不清楚它的標(biāo)注是什么,這里仍然需要配置bean,先創(chuàng)建druid 進(jìn)行配置后,注入依賴到JdbcTemplate中

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <context:component-scan base-package="com"/>
    <context:property-placeholder location="classpath:jdbcTemplate.properties"/>
    <bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="url" value="${atguigu.url}"></property>
        <property name="password" value="${atguigu.password}"></property>
        <property name="driverClassName" value="${atguigu.driver}"></property>
        <property name="username" value="${atguigu.username}"></property>
    </bean>
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="druidDataSource"/>
    </bean>
</beans>

這樣的話,我們先配置號(hào)bean對(duì)象,當(dāng)spring掃描的時(shí)候,掃描到Autowired的時(shí)候,會(huì)自動(dòng)裝配。只要保證bean的填寫正確,后續(xù)的實(shí)例spring會(huì)幫助進(jìn)行

Service層

接口

package com.service;
import com.pojo.Student;
import java.util.List;
public interface StudentService {
    List<Student> queryAll();
}

實(shí)現(xiàn)類

package com.service.impl;
import com.dao.StudentDaoImpl;
import com.pojo.Student;
import com.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class StudentsServiceImpl implements StudentService {
    @Autowired
    private StudentDaoImpl studentDao;
    @Override
    public List<Student> queryAll() {
        List<Student> students=  studentDao.queryAll();
        System.out.println("service層的內(nèi)容"+students);
        return students;
    }
}

constroller層內(nèi)容

package com.Constroller;
import com.pojo.Student;
import com.service.impl.StudentsServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import java.util.List;
@Controller
public class StudentsConstroller {
    @Autowired
    private StudentsServiceImpl studentsService;
    public List<Student> findAll(){
        List<Student> student = studentsService.queryAll();
        return  student;
    }
}

代碼書寫完畢之后,我們需要配置掃描,否則,spring的注解就沒(méi)有任何效果了。先掃描才可以創(chuàng)建,不掃描的話出現(xiàn)這個(gè)錯(cuò)誤

在這里插入圖片描述

    <context:component-scan base-package="加注解的包名"/>

測(cè)試

public class TestIoc {
    @Test
    void testIoc(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-ioc.xml");
        StudentsConstroller bean = applicationContext.getBean(StudentsConstroller.class);
        List<Student> studentList =  bean.findAll();
        System.out.println(studentList);
    }
}

仍然是老套路,先創(chuàng)建根據(jù)配置文件創(chuàng)建ioc容器,創(chuàng)建完成之后,掃描注解進(jìn)行bean對(duì)象的實(shí)例,然后執(zhí)行對(duì)應(yīng)的內(nèi)容。

怎么執(zhí)行呢?

通過(guò)Autowired進(jìn)行關(guān)聯(lián),我們可以將依賴看成不同的模塊,A模塊調(diào)用B怎么調(diào)用?,那就是創(chuàng)建B模塊的實(shí)例,在A中進(jìn)行使用,而在這個(gè)位置,我們是通過(guò)注解的形式進(jìn)行注入,相當(dāng)于注解的效果是實(shí)現(xiàn)B模塊的實(shí)例

在這里插入圖片描述

使用ioc容器獲取控制層對(duì)象,使用控制層的對(duì)象執(zhí)行后續(xù)的內(nèi)容。

前面我們提到的bean對(duì)象的配置,哪里使用的注入是通過(guò)指定property的ref進(jìn)行關(guān)聯(lián)的

在這里插入圖片描述

完全注解的方式進(jìn)行

我們上述中,配置druid和jdbcTemplate依舊是使用的bean文件配置,現(xiàn)在我們使用注解的形式來(lái)替代這個(gè)配置。當(dāng)然使用這個(gè)仍然需要用注解來(lái)實(shí)現(xiàn)

package com.ssm;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.jdbc.core.JdbcTemplate;
@Configuration
@ComponentScan(basePackages = "com.ssm")
@PropertySource("classpath:jdbcTemplate.properties")
public class JavaConfiguration {
    @Value(value = "${atguigu.username}")
    String name;
    @Value(value = "${atguigu.url}")
    String url;
    @Value(value = "${atguigu.password}")
    String password;
    @Value(value = "${atguigu.driver}")
    String driver;
    @Bean
    public DruidDataSource dataSource() {
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setUsername(name);
        druidDataSource.setUrl(url);
        druidDataSource.setPassword(password);
        druidDataSource.setDriverClassName(driver);
        return druidDataSource;
    }
    @Bean
    public JdbcTemplate jdbcTemplate(DruidDataSource dataSource) {
        JdbcTemplate jdbcTemplate = new JdbcTemplate();
        jdbcTemplate.setDataSource(dataSource);
        return jdbcTemplate;
    }
}

配置類的實(shí)現(xiàn)需要用到的注解有:

  • @Configuration:該注解用于標(biāo)記一個(gè)類,表示這是一個(gè)配置類。在 Spring 中,配置類可以替代傳統(tǒng)的 XML 配置文件,用 Java 代碼來(lái)配置應(yīng)用程序的組件。配置類中通常包含了一些 @Bean 注解,用于聲明需要被 Spring 容器管理的 bean。
  • @ComponentScan:該注解用于指定掃描的包路徑,使得 Spring 容器可以自動(dòng)掃描包下的組件,并將其自動(dòng)注冊(cè)為 bean。如果沒(méi)有指定掃描的包路徑,Spring 將掃描該注解所在類的同級(jí)包及其子包下的所有組件。
  • @PropertySource:該注解用于指定要加載的屬性文件,其中包含了一些配置參數(shù)。在 Spring 中,我們經(jīng)常需要將配置參數(shù)從屬性文件中讀取,然后注入到組件中,以便我們可以方便地管理和修改它們。使用該注解后,我們就可以通過(guò) @Value 注解或 Environment 對(duì)象來(lái)獲取屬性值了。
  • @Bean:該注解通常用于方法級(jí)別上,用于告訴 Spring 容器,通過(guò)該方法返回的對(duì)象將被注冊(cè)為一個(gè) bean。方法名通常就是 bean 的 id。使用該注解后,Spring 將調(diào)用該方法并將返回的對(duì)象添加到容器中。在有些情況下,我們可以在使用 @Bean 注解時(shí)指定 bean 的名稱,例如:@Bean(name = “myBean”)。

到此這篇關(guān)于springIoc以及注解的使用的文章就介紹到這了,更多相關(guān)springIoc注解使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java數(shù)學(xué)歸納法非遞歸求斐波那契數(shù)列的方法

    java數(shù)學(xué)歸納法非遞歸求斐波那契數(shù)列的方法

    這篇文章主要介紹了java數(shù)學(xué)歸納法非遞歸求斐波那契數(shù)列的方法,涉及java非遞歸算法的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • 業(yè)務(wù)系統(tǒng)的Prometheus實(shí)踐示例詳解

    業(yè)務(wù)系統(tǒng)的Prometheus實(shí)踐示例詳解

    這篇文章主要為大家介紹了業(yè)務(wù)系統(tǒng)的Prometheus實(shí)踐示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Java中SimpleDateFormat 格式化日期的使用

    Java中SimpleDateFormat 格式化日期的使用

    本文主要介紹了Java中SimpleDateFormat 格式化日期的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java多線程并發(fā)之線程池任務(wù)請(qǐng)求攔截測(cè)試實(shí)例

    Java多線程并發(fā)之線程池任務(wù)請(qǐng)求攔截測(cè)試實(shí)例

    這篇文章主要介紹了Java多線程并發(fā)之線程池任務(wù)請(qǐng)求攔截測(cè)試實(shí)例,隊(duì)列中永遠(yuǎn)沒(méi)有線程被加入,即使線程池已滿,也不會(huì)導(dǎo)致被加入排隊(duì)隊(duì)列,實(shí)現(xiàn)了只有線程池存在空閑線程的時(shí)候才會(huì)接受新任務(wù)的需求,需要的朋友可以參考下
    2023-12-12
  • Java函數(shù)習(xí)慣用法詳解

    Java函數(shù)習(xí)慣用法詳解

    本篇文章主要給大家總結(jié)了java中最常用的函數(shù)的用法和寫法,需要的朋友參考一下吧。
    2017-12-12
  • Spring MVC 攔截器 interceptor 用法詳解

    Spring MVC 攔截器 interceptor 用法詳解

    這篇文章主要介紹了Spring MVC 攔截器 interceptor 用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java多線程并發(fā)開(kāi)發(fā)之DelayQueue使用示例

    Java多線程并發(fā)開(kāi)發(fā)之DelayQueue使用示例

    這篇文章主要為大家詳細(xì)介紹了Java多線程并發(fā)開(kāi)發(fā)之DelayQueue使用示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Java HashMap源碼深入分析講解

    Java HashMap源碼深入分析講解

    在java開(kāi)發(fā)中,HashMap是最常用、最常見(jiàn)的集合容器類之一,下面一起溫故一下,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • SonarQube安裝、配置與使用教程圖解

    SonarQube安裝、配置與使用教程圖解

    這篇文章主要介紹了SonarQube安裝、配置與使用教程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 詳解如何在spring boot中使用spring security防止CSRF攻擊

    詳解如何在spring boot中使用spring security防止CSRF攻擊

    這篇文章主要介紹了詳解如何在spring boot中使用spring security防止CSRF攻擊,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05

最新評(píng)論

手游| 舟曲县| 红桥区| 长岛县| 库伦旗| 灌南县| 青海省| 台南县| 承德市| 柳林县| 宁城县| 高要市| 郧西县| 泰安市| 塔城市| 四川省| 河池市| 新竹市| 防城港市| 玉门市| 宽甸| 策勒县| 丹凤县| 岐山县| 雅安市| 双流县| 藁城市| 荔浦县| 五峰| 内江市| 历史| 犍为县| 民权县| 庄河市| 鹤山市| 娱乐| 翁源县| 临清市| 同心县| 胶南市| 普安县|