Spring @Autowiredフィールドがnullなのはなぜですか?

635

注:これは、一般的な問題に対する標準的な回答となることを目的としています。

フィールド@ServiceMileageFeeCalculator)を持つSpringクラス()があり@AutowiredますrateServiceが、フィールドはnullそれを使おうとしたときのものです。ログには、MileageFeeCalculatorBeanとMileageRateServiceBeanの両方が作成されていることが示されていますが、サービスBeanでメソッドNullPointerExceptionを呼び出そうとすると常に取得されmileageChargeます。Springがフィールドを自動配線しないのはなぜですか?

コントローラークラス:

@Controller
public class MileageFeeController {    
    @RequestMapping("/mileage/{miles}")
    @ResponseBody
    public float mileageFee(@PathVariable int miles) {
        MileageFeeCalculator calc = new MileageFeeCalculator();
        return calc.mileageCharge(miles);
    }
}

サービスクラス:

@Service
public class MileageFeeCalculator {

    @Autowired
    private MileageRateService rateService; // <--- should be autowired, is null

    public float mileageCharge(final int miles) {
        return (miles * rateService.ratePerMile()); // <--- throws NPE
    }
}

自動配線する必要があるサービスBeanですMileageFeeCalculatorが、そうではありません。

@Service
public class MileageRateService {
    public float ratePerMile() {
        return 0.565f;
    }
}

しようとするとGET /mileage/3、次の例外が発生します。

java.lang.NullPointerException: null
    at com.chrylis.example.spring_autowired_npe.MileageFeeCalculator.mileageCharge(MileageFeeCalculator.java:13)
    at com.chrylis.example.spring_autowired_npe.MileageFeeController.mileageFee(MileageFeeController.java:14)
    ...

19 answers

675

注釈@Autowiredが付けられたフィールドはnull、SpringがMileageFeeCalculator作成したコピーをnew知らず、自動配線することも知らなかったためです。

Spring Inversion of Control(IoC)コンテナーには、3つの主要な論理コンポーネントApplicationContextがあります。アプリケーションで使用できるコンポーネント(Bean)のレジストリ(と呼ばれる)、オブジェクトの依存関係を照合することによってオブジェクトの依存関係を挿入するコンフィギュレーターシステムです。コンテキスト内のBeanとの依存関係、および多くの異なるBeanの構成を調べて、それらを必要な順序でインスタンス化および構成する方法を決定できる依存関係ソルバー。

IoCコンテナは魔法ではなく、Javaオブジェクトについて何らかの方法で通知しない限り、Javaオブジェクトについて知る方法はありません。を呼び出すnewと、JVMは新しいオブジェクトのコピーをインスタンス化し、それを直接ユーザーに渡します。構成プロセスを経ることはありません。Beanを構成する方法は3つあります。

このGitHubプロジェクトで、Spring Bootを使用して起動し、このコードをすべて投稿しました。各アプローチの完全に実行されているプロジェクトを見て、それを機能させるために必要なすべてを確認できます。:でタグ付けしNullPointerExceptionますnonworking

あなたの豆を注入します

最も好ましいオプションは、SpringにすべてのBeanを自動配線させることです。これは最小限のコードを必要とし、最も保守しやすいものです。自動配線を希望どおりに機能させるには、次のMileageFeeCalculatorように自動配線します。

@Controller
public class MileageFeeController {

    @Autowired
    private MileageFeeCalculator calc;

    @RequestMapping("/mileage/{miles}")
    @ResponseBody
    public float mileageFee(@PathVariable int miles) {
        return calc.mileageCharge(miles);
    }
}

さまざまなリクエストに対してサービスオブジェクトの新しいインスタンスを作成する必要がある場合でも、SpringBeanスコープを使用してインジェクションを使用できます。

@MileageFeeCalculatorサービスオブジェクトを挿入することで機能するタグ:working-inject-bean

@Configurableを使用する

で作成されたオブジェクトをnew自動配線する必要がある場合は、Spring@ConfigurableアノテーションとAspectJコンパイル時ウィービングを使用してオブジェクトを挿入できます。このアプローチでは、オブジェクトのコンストラクターにコードを挿入して、Springが作成されていることを通知し、Springが新しいインスタンスを構成できるようにします。これには、ビルドで少し構成を行い(でコンパイルするなどajc)、Springのランタイム構成ハンドラーをオンにする(@EnableSpringConfiguredJavaConfig構文を使用する)必要があります。このアプローチは、Roo Active Recordシステムによって使用され、newエンティティのインスタンスが必要な永続性情報を注入できるようにします。

@Service
@Configurable
public class MileageFeeCalculator {

    @Autowired
    private MileageRateService rateService;

    public float mileageCharge(final int miles) {
        return (miles * rateService.ratePerMile());
    }
}

@Configurableサービスオブジェクトでを使用して機能するタグ:working-configurable

手動のBeanルックアップ:推奨されません

このアプローチは、特別な状況でレガシーコードとインターフェイスする場合にのみ適しています。ほとんどの場合、Springが自動配線でき、レガシーコードが呼び出すことができるシングルトンアダプタクラスを作成することが望ましいですが、SpringアプリケーションコンテキストにBeanを直接要求することは可能です。

これを行うには、SpringがApplicationContextオブジェクトへの参照を与えることができるクラスが必要です。

@Component
public class ApplicationContextHolder implements ApplicationContextAware {
    private static ApplicationContext context;

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

    public static ApplicationContext getContext() {
        return context;
    }
}

次に、レガシーコードはgetContext()、必要なBeanを呼び出して取得できます。

@Controller
public class MileageFeeController {    
    @RequestMapping("/mileage/{miles}")
    @ResponseBody
    public float mileageFee(@PathVariable int miles) {
        MileageFeeCalculator calc = ApplicationContextHolder.getContext().getBean(MileageFeeCalculator.class);
        return calc.mileageCharge(miles);
    }
}

Springコンテキストでサービスオブジェクトを手動で検索することで機能するタグ: working-manual-lookup

65
Shirish Coolkarni 2014-04-22 20:47.

Webアプリケーションをコーディングしていない場合は、@ Autowiringが実行されるクラスがSpringBeanであることを確認してください。通常、Springコンテナは、SpringBeanと見なされる可能性のあるクラスを認識しません。SpringクラスについてSpringコンテナに通知する必要があります。

これは、appln-contxtで構成するかクラスに@Componentとしてアノテーションを付けることで実現できます。また、new演算子を使用してアノテーション付きクラスを作成しないでください。以下のように、Appln-contextから取得してください。

@Component
public class MyDemo {


    @Autowired
    private MyService  myService; 

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
            System.out.println("test");
            ApplicationContext ctx=new ClassPathXmlApplicationContext("spring.xml");
            System.out.println("ctx>>"+ctx);

            Customer c1=null;
            MyDemo myDemo=ctx.getBean(MyDemo.class);
            System.out.println(myDemo);
            myDemo.callService(ctx);


    }

    public void callService(ApplicationContext ctx) {
        // TODO Auto-generated method stub
        System.out.println("---callService---");
        System.out.println(myService);
        myService.callMydao();

    }

}
44
Ravi Durairaj 2016-07-26 23:25.

実際には、JVM管理対象オブジェクトまたはSpring管理対象オブジェクトのいずれかを使用してメソッドを呼び出す必要があります。コントローラクラスの上記のコードから、自動配線されたオブジェクトを持つサービスクラスを呼び出すための新しいオブジェクトを作成しています。

MileageFeeCalculator calc = new MileageFeeCalculator();

そのため、そのようには機能しません。

このソリューションは、このMileageFeeCalculatorをコントローラー自体の自動配線オブジェクトとして作成します。

次のようにControllerクラスを変更します。

@Controller
public class MileageFeeController {

    @Autowired
    MileageFeeCalculator calc;  

    @RequestMapping("/mileage/{miles}")
    @ResponseBody
    public float mileageFee(@PathVariable int miles) {
        return calc.mileageCharge(miles);
    }
}
26
smwikipedia 2015-11-13 03:41.

IoCの世界での生活にあまり慣れていなかったときに、同じ問題に遭遇したことがあります@Autowired私のBeanの1つのフィールドは、実行時にnullです。

根本的な原因は、Spring IoCコンテナーによって維持される自動作成されたBean(@Autowiredフィールドが実際に適切に注入されている)を使用する代わりにnew、そのBeanタイプの独自のインスタンスを使用して使用していることです。もちろん@Autowired、Springには注入する機会がないため、このフィールドはnullです。

22
Deepak 2015-10-08 23:17.

あなたの問題は新しいです(Javaスタイルでのオブジェクト作成)

MileageFeeCalculator calc = new MileageFeeCalculator();

アノテーションを使用する@Service@Component、 サーバーの起動時にSpring@Configuration
アプリケーションコンテキストでBeanが作成されます。ただし、new演算子を使用してオブジェクトを作成すると、そのオブジェクトは、すでに作成されているアプリケーションコンテキストに登録されません。たとえば、私が使用したEmployee.javaクラス。

これをチェックしてください:

public class ConfiguredTenantScopedBeanProcessor implements BeanFactoryPostProcessor {

@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
    String name = "tenant";
    System.out.println("Bean factory post processor is initialized"); 
    beanFactory.registerScope("employee", new Employee());

    Assert.state(beanFactory instanceof BeanDefinitionRegistry,
            "BeanFactory was not a BeanDefinitionRegistry, so CustomScope cannot be used.");
    BeanDefinitionRegistry registry = (BeanDefinitionRegistry) beanFactory;

    for (String beanName : beanFactory.getBeanDefinitionNames()) {
        BeanDefinition definition = beanFactory.getBeanDefinition(beanName);
        if (name.equals(definition.getScope())) {
            BeanDefinitionHolder proxyHolder = ScopedProxyUtils.createScopedProxy(new BeanDefinitionHolder(definition, beanName), registry, true);
            registry.registerBeanDefinition(beanName, proxyHolder.getBeanDefinition());
        }
    }
}

}
13
bluish 2015-05-15 02:44.

私はSpringを初めて使用しますが、この実用的なソリューションを発見しました。それが非難できる方法かどうか教えてください。

applicationContextはこのBeanにSpringを注入させます:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;

@Component
public class SpringUtils {

    public static ApplicationContext ctx;

    /**
     * Make Spring inject the application context
     * and save it on a static variable,
     * so that it can be accessed from any point in the application. 
     */
    @Autowired
    private void setApplicationContext(ApplicationContext applicationContext) {
        ctx = applicationContext;       
    }
}

必要に応じて、このコードをメインアプリケーションクラスにも配置できます。

他のクラスは次のように使用できます。

MyBean myBean = (MyBean)SpringUtils.ctx.getBean(MyBean.class);

このようにして、任意のBeanは、アプリケーション内の任意のオブジェクト(これもでインスタンス化されますnewによって静的な方法で取得できます

12
Alireza Fattahi 2016-06-12 05:15.

まれなケースのようですが、これが私に起こったことです:

@Inject代わりに@Autowired、Springでサポートされているjavaee標準を使用しました。1つの場所ではなく、すべての場所で正常に機能し、Beanが正しく注入されました。豆の注入は同じようです

@Inject
Calculator myCalculator

ついに、エラーはcom.opensymphony.xwork2.Injectjavax.inject.Inject!の代わりにインポートした(実際にはEclipseオートコンプリート機能)というものであることがわかりました。

だから、要約必ずあなたの注釈ことを確認する(@Autowired@Inject@Service、...)正しいパッケージを持っています!

6
Brent Bradburn 2018-04-13 08:25.

これがテストクラスで発生している場合は、クラスに注釈を付けることを忘れていないことを確認してください。

たとえば、Spring Bootの場合

@RunWith(SpringRunner.class)
@SpringBootTest
public class MyTests {
    ....

しばらく経ちます...

SpringBootは進化し続けています@RunWith 正しいバージョンのJUnitを使用すれば、使用する必要はなくなりました。

以下のために@SpringBootTest仕事に一人で立って、あなたが使用する必要がある@TestからJava JUnit5アノテーションの違い

//import org.junit.Test; // JUnit4
import org.junit.jupiter.api.Test; // JUnit5

@SpringBootTest
public class MyTests {
    ....

この構成を間違えると、テストはコンパイルされますが@Autowired@Valueフィールド(たとえば)はになりますnull。Spring Bootは魔法のように動作するため、この障害を直接デバッグする方法がほとんどない場合があります。

5
msucil 2017-01-11 08:00.

アノテーション付きのクラスをスキャンするようにSpringに指示しなかったと思います。

Spring@ComponentScan("packageToScan")アプリケーションの構成クラスで使用して、Springにスキャンを指示できます。

@Service, @Component などの注釈はメタ記述を追加します。

Springは、Beanとして作成されたか、アノテーションでマークされたクラスのインスタンスのみを注入します。

注釈が付けられたクラスは、注入する前に春によって識別される必要があります@ComponentScan。注釈が付けられたクラスを春に探すように指示します。Springが検出@Autowiredすると、関連するBeanを検索し、必要なインスタンスを注入します。

アノテーションのみを追加し、依存性注入を修正または促進しません。Springはどこを探すべきかを知る必要があります。

4
Ondrej Bozek 2015-04-22 01:35.

別の解決策は、次のように呼び出し SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this)
を行うことです。MileageFeeCalculatorコンストラクターへ:

@Service
public class MileageFeeCalculator {

    @Autowired
    private MileageRateService rateService; // <--- will be autowired when constructor is called

    public MileageFeeCalculator() {
        SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this)
    }

    public float mileageCharge(final int miles) {
        return (miles * rateService.ratePerMile()); 
    }
}
3
62mkv 2017-10-12 18:43.

更新:本当に賢い人々は、この答えをすぐに指摘しました。これは、以下に説明する奇妙さを説明しています。

元の回答:

それが誰かに役立つかどうかはわかりませんが、一見正しいことをしている間でも同じ問題に悩まされていました。Mainメソッドには、次のようなコードがあります。

ApplicationContext context =
    new ClassPathXmlApplicationContext(new String[] {
        "common.xml",
        "token.xml",
        "pep-config.xml" });
    TokenInitializer ti = context.getBean(TokenInitializer.class);

そしてtoken.xmlファイルに私は行を持っていました

<context:component-scan base-package="package.path"/>

package.pathがもう存在しないことに気づいたので、行を完全に削除しました。

そしてその後、NPEが入り始めました。pep-config.xml私はたった2つの豆を持っていました:

<bean id="someAbac" class="com.pep.SomeAbac" init-method="init"/>
<bean id="settings" class="com.pep.Settings"/>

そしてSomeAbacクラスには次のように宣言されたプロパティがあります

@Autowired private Settings settings;

何らかの理由で、要素がまったく存在しない場合、init()の設定はnull<context:component-scan/>ですが、要素が存在し、basePackageとしていくつかのbsがある場合、すべてが正常に機能します。この行は次のようになります。

<context:component-scan base-package="some.shit"/>

そしてそれは動作します。誰かが説明を提供できるかもしれませんが、私にとっては今はそれで十分です)

3
Atul Jain 2019-05-06 21:02.

これは、MileageFeeCalculator calc = new MileageFeeCalculator();私たちがSpringを使用しているNullPointerExceptionを与える原因です-オブジェクトを手動で作成する必要はありません。オブジェクトの作成はIoCコンテナによって処理されます。

2
Abhishek 2016-10-14 08:41.

この問題は、サービスクラスで@Serviceアノテーションを使用し、必要なBeanクラスAをパラメーターとして他のBeanクラスBコンストラクターに渡し、クラスBのコンストラクターに@Autowiredアノテーションを付けることで修正することもできます。ここにサンプルスニペット:

@Service
public class ClassB {

    private ClassA classA;

    @Autowired
    public ClassB(ClassA classA) {
        this.classA = classA;
    }

    public void useClassAObjectHere(){
        classA.callMethodOnObjectA();
    }
}
2
samuelj90 2019-11-27 18:44.

簡単に言えば、@Autowiredフィールドが存在する主な理由は2つあります。null

  • あなたのクラスは春の豆ではありません。

  • フィールドは豆ではありません。

1
JackLeEmmerdeur 2019-07-06 04:51.

ここで言及されていないことは、この記事の「実行順序」の段落で説明されています。

クラスに@Componentまたは派生物@Serviceまたは@Repository(もっとあると思います)で注釈を付ける必要があることを「学習」した後、それらの内部の他のコンポーネントを自動配線するために、これらの他のコンポーネントがコンストラクター内でまだnullであることに気付きました親コンポーネントの。

@PostConstructを使用すると、次のことが解決されます。

@SpringBootApplication
public class Application {
    @Autowired MyComponent comp;
}

そして:

@Component
public class MyComponent {
    @Autowired ComponentDAO dao;

    public MyComponent() {
        // dao is null here
    }

    @PostConstruct
    public void init() {
        // dao is initialized here
    }
}
1
Rishabh Agarwal 2019-12-21 06:33.

これは、ユニットテストの場合にのみ有効です。

私のサービスクラスにはサービスのアノテーションがあり、それは@autowired別のコンポーネントクラスでした。私がテストしたとき、コンポーネントクラスはnullになりました。サービスクラスの場合、を使用してオブジェクトを作成していたためnew

単体テストを作成している場合は、を使用してオブジェクトを作成していないことを確認してくださいnew object()。代わりにinjectMockを使用してください。

これで私の問題は修正されました。ここに便利なリンクがあります

0
yglodt 2019-01-12 05:55.

また、何らかの理由で@Serviceasfinalでメソッドを作成した場合、そこからアクセスする自動配線されたBeanは常にになりますnull

0
Deadpool 2020-05-12 03:31.

質問に完全に関連しているわけではありませんが、フィールドインジェクションがnullの場合でも、コンストラクターベースのインジェクションは正常に機能します。

    private OrderingClient orderingClient;
    private Sales2Client sales2Client;
    private Settings2Client settings2Client;

    @Autowired
    public BrinkWebTool(OrderingClient orderingClient, Sales2Client sales2Client, Settings2Client settings2Client) {
        this.orderingClient = orderingClient;
        this.sales2Client = sales2Client;
        this.settings2Client = settings2Client;
    }
0
Ashutosh Tiwari 2020-10-26 01:39.

以下のいずれかが機能します:

  1. @Autowiredを使用しているクラスはBeanではありません(確かにどこかでnew()を使用した可能性があります)。

  2. SpringConfigクラス内では、Springが@Componentを検索する必要のあるパッケージについて言及していません(@ComponentScan(basePackages "here")について話しています)

上記の2つが機能しない場合は、System.out.println()の配置を開始し、どこで問題が発生しているかを把握します。

Related questions

MORE COOL STUFF

「水曜日」シーズン1の中心には大きなミステリーがあります

「水曜日」シーズン1の中心には大きなミステリーがあります

Netflixの「水曜日」は、典型的な10代のドラマ以上のものであり、実際、シーズン1にはその中心に大きなミステリーがあります.

ボディーランゲージの専門家は、州訪問中にカミラ・パーカー・ボウルズが輝くことを可能にした微妙なケイト・ミドルトンの動きを指摘しています

ボディーランゲージの専門家は、州訪問中にカミラ・パーカー・ボウルズが輝くことを可能にした微妙なケイト・ミドルトンの動きを指摘しています

ケイト・ミドルトンは、州の夕食会と州の訪問中にカミラ・パーカー・ボウルズからスポットライトを奪いたくなかった、と専門家は言う.

一部のファンがハリー・スタイルズとオリビア・ワイルドの「非常に友好的な」休憩が永続的であることを望んでいる理由

一部のファンがハリー・スタイルズとオリビア・ワイルドの「非常に友好的な」休憩が永続的であることを望んでいる理由

一部のファンが、オリビア・ワイルドが彼女とハリー・スタイルズとの間の「難しい」が「非常に友好的」な分割を恒久的にすることを望んでいる理由を見つけてください.

エリザベス女王の死後、ケイト・ミドルトンはまだ「非常に困難な時期」を過ごしている、と王室の専門家が明らかにする 

エリザベス女王の死後、ケイト・ミドルトンはまだ「非常に困難な時期」を過ごしている、と王室の専門家が明らかにする&nbsp;

エリザベス女王の死後、ケイト・ミドルトンが舞台裏で「非常に困難な時期」を過ごしていたと伝えられている理由を調べてください.

セントヘレナのジェイコブのはしごを登るのは、気弱な人向けではありません

セントヘレナのジェイコブのはしごを登るのは、気弱な人向けではありません

セント ヘレナ島のジェイコブズ ラダーは 699 段の真っ直ぐ上る階段で、頂上に到達すると証明書が発行されるほどの難易度です。

The Secrets of Airline Travel Quiz

The Secrets of Airline Travel Quiz

Air travel is far more than getting from point A to point B safely. How much do you know about the million little details that go into flying on airplanes?

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

パンデミックは終わったかもしれないが、Covid-19 は終わっていない

パンデミックは終わったかもしれないが、Covid-19 は終わっていない

2021 年 6 月 8 日にニューヨーク市で開催された covid-19 パンデミックで亡くなった人々の命を偲び、祝うために、ネーミング ザ ロスト メモリアルズが主催するイベントと行進の最中に、グリーンウッド墓地の正門から記念碑がぶら下がっています。週末、ジョー・バイデン大統領は、covid-19 パンデミックの終息を宣言しました。これは、過去 2 年以上にわたり、公の場でそうするための長い列の中で最新のものです。

デビル・イン・オハイオの予告編は、エミリー・デシャネルもオハイオにいることを明らかにしています

デビル・イン・オハイオの予告編は、エミリー・デシャネルもオハイオにいることを明らかにしています

オハイオ州のエミリー・デシャネル みんな早く来て、ボーンズが帰ってきた!まあ、ショーボーンズではなく、彼女を演じた俳優. エミリー・デシャネルに最後に会ってからしばらく経ちました.Emily Deschanel は、長期にわたるプロシージャルな Bones の Temperance “Bones” Brennan としてよく知られています。

ドナルド・トランプはFBIのマー・ア・ラーゴ襲撃映像をリリースする予定ですか?

ドナルド・トランプはFBIのマー・ア・ラーゴ襲撃映像をリリースする予定ですか?

どうやら、ドナルド・トランプに近い人々は、今月初めにFBIによって家宅捜索された彼のMar-a-Lago財産からの映像を公開するよう彼に勧めています. 前大統領はテープを公開するかどうかを確認していませんが、息子はフォックス・ニュースにそうなるだろうと語った.

Andor は、他の Star Wars ショーから大きな距離を置きます。

Andor は、他の Star Wars ショーから大きな距離を置きます。

アンドールの一場面。数十年前、ジョージ・ルーカスがスター・ウォーズのテレビ番組を制作するのを妨げた主な理由は、お金でした。

ケイト・ミドルトンとウィリアム王子は、彼らが子供たちと行っているスパイをテーマにした活動を共有しています

ケイト・ミドルトンとウィリアム王子は、彼らが子供たちと行っているスパイをテーマにした活動を共有しています

ケイト・ミドルトンとウィリアム王子は、子供向けのパズルの本の序文を書き、ジョージ王子、シャーロット王女、ルイ王子と一緒にテキストを読むと述べた.

事故で押しつぶされたスイカは、動物を喜ばせ水分補給するために野生生物保護団体に寄付されました

事故で押しつぶされたスイカは、動物を喜ばせ水分補給するために野生生物保護団体に寄付されました

Yak's Produce は、数十個のつぶれたメロンを野生動物のリハビリ専門家であるレスリー グリーンと彼女のルイジアナ州の救助施設で暮らす 42 匹の動物に寄付しました。

デミ・ロヴァートは、新しいミュージシャンのボーイフレンドと「幸せで健康的な関係」にあります: ソース

デミ・ロヴァートは、新しいミュージシャンのボーイフレンドと「幸せで健康的な関係」にあります: ソース

8 枚目のスタジオ アルバムのリリースに向けて準備を進めているデミ ロヴァートは、「スーパー グレート ガイ」と付き合っている、と情報筋は PEOPLE に確認しています。

Plathville の Kim と Olivia Plath が数年ぶりに言葉を交わすことへようこそ

Plathville の Kim と Olivia Plath が数年ぶりに言葉を交わすことへようこそ

イーサン プラスの誕生日のお祝いは、TLC のウェルカム トゥ プラスビルのシーズン 4 のフィナーレで、戦争中の母親のキム プラスと妻のオリビア プラスを結びつけました。

仕事の生産性を高める 8 つのシンプルなホーム オフィスのセットアップのアイデア

仕事の生産性を高める 8 つのシンプルなホーム オフィスのセットアップのアイデア

ホームオフィスのセットアップ術を極めよう!AppExert の開発者は、家族全員が一緒にいる場合でも、在宅勤務の技術を習得しています。祖父や曽祖父が共同家族で暮らしていた頃の記憶がよみがえりました。

2022 年、私たちのデジタル ライフはどこで終わり、「リアル ライフ」はどこから始まるのでしょうか?

20 年前のタイムトラベラーでさえ、日常生活におけるデジタルおよびインターネットベースのサービスの重要性に驚くことでしょう。MySpace、eBay、Napster などのプラットフォームは、高速化に焦点を合わせた世界がどのようなものになるかを示してくれました。

ニューロマーケティングの秘密科学

ニューロマーケティングの秘密科学

マーケティング担当者が人間の欲望を操作するために使用する、最先端の (気味が悪いと言う人もいます) メソッドを探ります。カートをいっぱいにして 3 桁の領収書を持って店を出る前に、ほんの数点の商品を買いに行ったことはありませんか? あなたは一人じゃない。

地理情報システムの日: GIS 開発者として学ぶべき最高の技術スタック

地理情報システムの日: GIS 開発者として学ぶべき最高の技術スタック

私たちが住んでいる世界を確実に理解するには、データが必要です。ただし、空間参照がない場合、このデータは地理的コンテキストがないと役に立たなくなる可能性があります。

Language