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

詳解Spring如何更簡單的讀取和存儲對象

 更新時(shí)間:2023年07月18日 11:00:31   作者:摸魚王胖嘟嘟  
這篇文章主要為大家詳細(xì)介紹了Spring中如何更簡單的實(shí)現(xiàn)讀取和存儲對象,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

前置工作

在spring-config.xml添加如下配置:配置bean的掃描根路徑:只有當(dāng)前目錄下的類才會(huì)掃描是否添加了注解,如果添加了注解,就將這些加了注解的類,存放到IoC容器中。

<?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:content="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">
    <content:component-scan base-package="com.java.demo">
    </content:component-scan>
</beans>

更加簡單的存儲Bean對象

兩種方法:

1.通過類注解實(shí)現(xiàn)Bean對象的存儲;

  • @Controller:控制器,驗(yàn)證用戶請求的數(shù)據(jù)正確性(安保系統(tǒng))
  • @Service:服務(wù)層,編排和調(diào)度具體執(zhí)行方法的(客服中心)
  • @Repository:持久層,和數(shù)據(jù)庫進(jìn)行交互,等同于DAO(Data Access Object) 數(shù)據(jù)訪問層
  • @Component:組件(工具類)
  • @Configuration:配置項(xiàng)(配置項(xiàng)目中的一些配置)

2.通過方法注解實(shí)現(xiàn)Bean對象的存儲

@Bean路徑

使用@Controller(控制器存儲)

package com.java.demo;
import org.springframework.stereotype.Controller;
@Controller(value = "userinfo")
public class User {
    public void sayHi() {
        System.out.println("Hi,User~");
    }
}
import com.java.demo.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@SuppressWarnings({"all"})
public class App {
    public static void main(String[] args) {
        // 1. 得到容器對象
        ApplicationContext context =
                new ClassPathXmlApplicationContext("spring-config.xml");
        // 2. 得到 Bean 對象
        User user = context.getBean("userinfo", User.class);
        // 3. 使用 Bean 對象
        user.sayHi();
    }
}

import com.java.demo.Student;
import com.java.demo.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@SuppressWarnings({"all"})
public class App {
    public static void main(String[] args) {
        // 1. 得到容器對象
        ApplicationContext context =
                new ClassPathXmlApplicationContext("spring-config.xml");
        // 2. 得到 Bean 對象
//        User user = context.getBean("userinfo", User.class);
        Student student = context.getBean("student", Student.class);
        // 3. 使用 Bean 對象
//        user.sayHi();
        student.sayHi();
    }
}

原因就是:student沒有加注解。

使用注解和XML是可以一起使用的。

類注解存儲Bean命名問題

默認(rèn)類名首字母小寫就能獲取到Bean對象。

獲取不到Bean對象

使用原類名,可以獲取到Bean對象

我們在獲取Bean對象時(shí),傳入名稱時(shí),一般分為兩種情況:

默認(rèn)情況下:使用原類名首字母小寫就能讀取到Bean對象

特殊情況:如果不滿足首字母大寫和第二個(gè)字母小寫的情況,那么使用原類名獲取

Java項(xiàng)目標(biāo)準(zhǔn)分層

五大類注解之間的關(guān)系

方法注解@Bean

a.使用注意事項(xiàng):@Bean 注解 必須要配合五大類注解一起使用

package com.java.demo.model;
import java.time.LocalDateTime;
@SuppressWarnings({"all"})
/**
 * 普通的文章實(shí)體類
 */
public class ArticleInfo {
    private int aid;
    private String title;
    private String content;
    private LocalDateTime createtime;
    public int getAid() {
        return aid;
    }
    public void setAid(int aid) {
        this.aid = aid;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public LocalDateTime getCreatetime() {
        return createtime;
    }
    public void setCreatetime(LocalDateTime createtime) {
        this.createtime = createtime;
    }
    @Override
    public String toString() {
        return "ArticleInfo{" +
                "aid=" + aid +
                ", title='" + title + '\'' +
                ", content='" + content + '\'' +
                ", createtime=" + createtime +
                '}';
    }
}
package com.java.demo;
import com.java.demo.model.ArticleInfo;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Controller;
import java.time.LocalDateTime;
@SuppressWarnings({"all"})
@Controller
public class Articles {
    @Bean // 將當(dāng)前方法返回的對象存儲到 IoC 容器
    public ArticleInfo articleInfo() {
        // 偽代碼
        ArticleInfo articleInfo = new ArticleInfo();
        articleInfo.setAid(1);
        articleInfo.setTitle("今天周幾?");
        articleInfo.setContent("今天周一!");
        articleInfo.setCreatetime(LocalDateTime.now());
        return articleInfo;
    }
}
import com.java.demo.UConfig;
import com.java.demo.example.Teacher;
import com.java.demo.model.ArticleInfo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@SuppressWarnings({"all"})
public class App {
    public static void main(String[] args) {
        // 1. 得到容器對象
        ApplicationContext context =
                new ClassPathXmlApplicationContext("spring-config.xml");
        // 2. 得到 Bean 對象
//        User user = context.getBean("userinfo", User.class);
//        Student student = context.getBean("student", Student.class);
//        UserService userService = context.getBean("userService",UserService.class);
//        Teacher teacher = context.getBean("teacher",Teacher.class);
//        UConfig uConfig = context.getBean("UConfig",UConfig.class);
        ArticleInfo articleInfo = context.getBean("articleInfo", ArticleInfo.class);
        // 3. 使用 Bean 對象
//        user.sayHi();
//        student.sayHi();
//        userService.sayHi();
//        teacher.sayHi();
//        uConfig.sayHi();
        System.out.println(articleInfo);
    }
}

b.@Bean 獲取時(shí)注意事項(xiàng):@Bean的默認(rèn)命名=方法名。

重命名@Bean的幾種方式

方式1:@Bean("aaa")

方法2:@Bean(name = "aaa")

方式3:@Bean(value = "aaa")

重命名擴(kuò)展:@Bean 支持指定多個(gè)名稱@Bean(value = {“aaa”})默認(rèn)命名注意事項(xiàng):當(dāng)@Bean重命名之后,那么默認(rèn)的使用方法名獲取Bean對象的方式就不能使用了。

以上就是詳解Spring如何更簡單的讀取和存儲對象的詳細(xì)內(nèi)容,更多關(guān)于Spring讀取存儲對象的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一篇文章徹底拆解Java?HashMap擴(kuò)容機(jī)制

    一篇文章徹底拆解Java?HashMap擴(kuò)容機(jī)制

    在Java中HashMap是一個(gè)非常常用的數(shù)據(jù)結(jié)構(gòu),基于哈希表實(shí)現(xiàn),它通過鍵值對的形式存儲數(shù)據(jù),這篇文章主要介紹了Java HashMap擴(kuò)容機(jī)制的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-04-04
  • 解決idea中javaweb的mysql8.0.15配置問題

    解決idea中javaweb的mysql8.0.15配置問題

    這篇文章主要介紹了idea中javaweb的mysql8.0.15配置問題 ,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • 關(guān)于Mybatis-Plus字段策略與數(shù)據(jù)庫自動(dòng)更新時(shí)間的一些問題

    關(guān)于Mybatis-Plus字段策略與數(shù)據(jù)庫自動(dòng)更新時(shí)間的一些問題

    這篇文章主要介紹了關(guān)于Mybatis-Plus字段策略與數(shù)據(jù)庫自動(dòng)更新時(shí)間的一些問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Java實(shí)現(xiàn)簡單的五子棋小游戲

    Java實(shí)現(xiàn)簡單的五子棋小游戲

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡單的五子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 如何解決Gradle、Maven項(xiàng)目build后沒有mybatis的mapper.xml文件的問題

    如何解決Gradle、Maven項(xiàng)目build后沒有mybatis的mapper.xml文件的問題

    這篇文章主要介紹了如何解決Gradle、Maven項(xiàng)目build后沒有mybatis的mapper.xml文件的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Java HttpClient用法的示例詳解

    Java HttpClient用法的示例詳解

    Java開發(fā)語言中實(shí)現(xiàn)HTTP請求的方法主要有兩種:一種是JAVA的標(biāo)準(zhǔn)類HttpUrlConnection;另一種是第三方開源框架HTTPClient。本文就將詳細(xì)講講Java中HttpClient的使用,需要的可以參考一下
    2022-07-07
  • 配置javaw.exe雙擊運(yùn)行jar包方式

    配置javaw.exe雙擊運(yùn)行jar包方式

    這篇文章主要介紹了配置javaw.exe雙擊運(yùn)行jar包方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • SpringBoot項(xiàng)目集成Swagger和swagger-bootstrap-ui及常用注解解讀

    SpringBoot項(xiàng)目集成Swagger和swagger-bootstrap-ui及常用注解解讀

    這篇文章主要介紹了SpringBoot項(xiàng)目集成Swagger和swagger-bootstrap-ui及常用注解解讀,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • java中jdk代理和cglib代理使用步驟詳解

    java中jdk代理和cglib代理使用步驟詳解

    這篇文章主要給大家介紹了關(guān)于java中jdk代理和cglib代理使用步驟的相關(guān)資料,JDK代理和CGLIB是Java中兩種常見的代理實(shí)現(xiàn)方式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • Java魔法值處理的四種方式

    Java魔法值處理的四種方式

    這篇文章主要介紹了Java魔法值處理的四種方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論

定远县| 洛浦县| 平江县| 霸州市| 扶余县| 辉南县| 保德县| 宁蒗| 凯里市| 萨嘎县| 青田县| 东源县| 来安县| 曲水县| 阳新县| 离岛区| 南昌县| 高雄县| 新乡市| 贺兰县| 许昌市| 惠州市| 侯马市| 鄂尔多斯市| 乌兰浩特市| 固安县| 北票市| 修水县| 天峨县| 五家渠市| 沭阳县| 陆丰市| 大新县| 丹巴县| 盐池县| 习水县| 山丹县| 布尔津县| 肇东市| 神农架林区| 长丰县|