লোড হওয়া সমস্ত বসন্ত বিনগুলি মুদ্রণ করুন


95

প্রারম্ভকালে লোড হওয়া সমস্ত বসন্ত বিনগুলি মুদ্রণের কোনও উপায় আছে? আমি স্প্রিং ২.০ ব্যবহার করছি using

উত্তর:


88

হ্যাঁ, ApplicationContextকল করুন এবং কল করুন.getBeanDefinitionNames()

আপনি এর দ্বারা প্রসঙ্গটি পেতে পারেন:

  • বাস্তবায়ন ApplicationContextAware
  • এটি ইনজেকশন দিয়ে @Inject/ @Autowired(2.5 পরে)
  • ব্যবহার WebApplicationContextUtils.getRequiredWebApplicationContext(..)

সম্পর্কিত: আপনি শিমের রেজিস্ট্রেশন করেও প্রতিটি শিমের নিবন্ধন সনাক্ত করতে পারেন BeanPostprocessor। এটি প্রতিটি শিমের জন্য অবহিত করা হবে।


4
ApplicationContextAwareইন্টারফেস বাস্তবায়নের কারণ হ'ল বসন্ত কাঠামো এটিকে অ্যাপ্লিকেশন প্রসঙ্গে অ্যাক্সেস করার সুযোগ দেয়। @Configurationউদ্দেশ্যযুক্ত অ্যাপ্লিকেশন প্রসঙ্গে আপনার এটি ক্লাসে রাখা উচিত ।
smwikedia

একজন সংশ্লিষ্ট লিঙ্ক: stackoverflow.com/questions/14829258/...
smwikipedia

4
applicationContext.getBeanDefinitionNames () শিম প্রদর্শন করে না যা বিন বিন্যাস উদাহরণ ছাড়াই নিবন্ধিত রয়েছে। আপনি ম্যানুয়ালি নিবন্ধিত সিঙ্গলটন মটরশুটি তালিকাভুক্ত করতে পারবেন না। প্রাক্তন :) আপনি পরিবেশ, সিস্টেমপ্রপার্টি, সিস্টেম পরিবেশ মটরশুটি তালিকাভুক্ত করতে পারবেন না। তবে এই মটরশুটি পাত্রে পাওয়া যায়। আপনি তাদেরকে ব্যবহার @Auwired পরিবেশ env ইত্যাদি autowire করতে stackoverflow.com/a/54863282/1840774
Velu

67
public class PrintBeans {
    @Autowired
    ApplicationContext applicationContext;

    public void printBeans() {
        System.out.println(Arrays.asList(applicationContext.getBeanDefinitionNames()));
    }
}

applicationContext.getBeanDefinitionNames () শিম প্রদর্শন করে না যা বিন বিন্যাস উদাহরণ ছাড়াই নিবন্ধিত রয়েছে। আপনি ম্যানুয়ালি নিবন্ধিত সিঙ্গলটন মটরশুটি তালিকাভুক্ত করতে পারবেন না। প্রাক্তন :) আপনি পরিবেশ, সিস্টেমপ্রপার্টি, সিস্টেম পরিবেশ মটরশুটি তালিকাভুক্ত করতে পারবেন না। তবে এই মটরশুটি পাত্রে পাওয়া যায়। আপনি তাদেরকে ব্যবহার @Auwired পরিবেশ env ইত্যাদি autowire করতে stackoverflow.com/a/54863282/1840774
Velu

22

সমস্ত শিমের নাম এবং এর ক্লাসগুলি মুদ্রণ করুন:

package com.javahash.spring.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class HelloWorldController {

    @Autowired
    private ApplicationContext applicationContext;

    @RequestMapping("/hello")
    public String hello(@RequestParam(value="key", required=false, defaultValue="World") String name, Model model) {

        String[] beanNames = applicationContext.getBeanDefinitionNames();

        for (String beanName : beanNames) {

            System.out.println(beanName + " : " + applicationContext.getBean(beanName).getClass().toString());
        }

        model.addAttribute("name", name);

        return "helloworld";
    }
}

4
applicationContext.getBeanDefinitionNames () শিম প্রদর্শন করে না যা বিন বিন্যাস উদাহরণ ছাড়াই নিবন্ধিত রয়েছে। আপনি ম্যানুয়ালি নিবন্ধিত সিঙ্গলটন মটরশুটি তালিকাভুক্ত করতে পারবেন না। প্রাক্তন- :) আপনি পরিবেশ, সিস্টেমপ্রপার্টি, সিস্টেম পরিবেশ মটরশুটি তালিকাভুক্ত করতে পারবেন না। তবে এই মটরশুটি পাত্রে পাওয়া যায়। আপনি তাদেরকে ব্যবহার @Auwired পরিবেশ env ইত্যাদি autowire করতে stackoverflow.com/a/54863282/1840774
Velu

19

স্প্রিং বুট এবং অ্যাকিউউটর স্টার্টার সহ

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

আপনি শেষ পয়েন্ট পরীক্ষা করতে পারেন /beans


4
প্রশ্ন ছিল স্প্রিং বুট নয় , স্প্রিং ২.০ এর জন্য ।
টিএমএন

8

applicationContext.getBeanDefinitionNames () শিম প্রদর্শন করে না যা বিন বিন্যাস উদাহরণ ছাড়াই নিবন্ধিত রয়েছে ।

package io.velu.core;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan
public class Core {

public static void main(String[] args) {
    AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Core.class);
    String[] singletonNames = context.getDefaultListableBeanFactory().getSingletonNames();
    for (String singleton : singletonNames) {
        System.out.println(singleton);
    }       
}

}


কনসোল আউটপুট

environment
systemProperties
systemEnvironment
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
messageSource
applicationEventMulticaster
lifecycleProcessor

যেমন আপনি আউটপুট, পরিবেশ, সিস্টেমপ্রপার্টি, সিস্টেম-পরিবেশ মটরশুটিগুলি প্রসঙ্গ.বিটবিয়ান ডেফিনিশননাম () পদ্ধতি ব্যবহার করে প্রদর্শিত হবে না

স্প্রিং বুট

স্প্রিং বুট ওয়েব অ্যাপ্লিকেশনগুলির জন্য, সমস্ত মটরশুটি নীচের শেষ পয়েন্টটি ব্যবহার করে তালিকাভুক্ত করা যেতে পারে।

@RestController
@RequestMapping("/list")
class ExportController {

@Autowired
private ApplicationContext applicationContext;

@GetMapping("/beans")
@ResponseStatus(value = HttpStatus.OK)
String[] registeredBeans() {
    return printBeans();
}

private String[] printBeans() {
    AutowireCapableBeanFactory autowireCapableBeanFactory = applicationContext.getAutowireCapableBeanFactory();
    if (autowireCapableBeanFactory instanceof SingletonBeanRegistry) {
        String[] singletonNames = ((SingletonBeanRegistry) autowireCapableBeanFactory).getSingletonNames();
        for (String singleton : singletonNames) {
            System.out.println(singleton);
        }
        return singletonNames;
    }
    return null;
}

}


["অটোসিঙ্কিগ্রেশনআরপোর্ট", ​​"স্প্রিং অ্যাপ্লিকেশনআরগমেন্টস", "স্প্রিংবুটব্যানার", "স্প্রিংবুটলগিংসিসটেম", "এনভায়রনমেন্ট", "সিস্টেমপ্রপ্রেটিস", "সিস্টেমইএনভায়রনমেন্ট", "org.springframework.context.annotation.internConfigration.frugation.torpaorgeg.org। internalCachingMetadataReaderFactory "," org.springframework.boot.autoconfigure.condition.BeanTypeRegistry "," org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry "," propertySourcesPlaceholderConfigurer "," org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.store " , "সংরক্ষণ করুনআররকন্ট্রোলারট্রেটক্লাসপোস্টপ্রসেসর "," org.springframework.context.annotation.internAutowiredAnnotationProcessor "," org.springframework.context.annotation.internalRequiredAnnotationProcessor.transmontext.com। org.spong.com। "কনফিগারেশনপ্রিন্টসবাইন্ডিংপোস্টপ্রসেসর", "org.springframework.schedolve.annotation.ProxyAsyncConfigration", "org.springframework.context.annotation.in আন্তঃসিঙ্কঅ্যানোটেশনপ্রসেসার", "পদ্ধতিবিলিডসপ্রেসট্রেসন সার্ভারস্রোসিংপ্রেসিটার"applicationEventMulticaster "," org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration $ EmbeddedTomcat "," tomcatEmbeddedServletContainerFactory "," org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration $ TomcatWebSocketConfiguration "," websocketContainerCustomizer "," spring.http.encoding- org.springframework.boot.autoconfigure.web.HttpEncodingProperties "," org.springframework.boot.autoconfigure.web.HttpEncodingAutoConfigration "," localeCharsetMappingsCusomf.gug.sug.gp.gp.gp.gp.gp.png.fg.pngsgg.pnggg.pngsgg.pngsgg.pngsgg.pngsgg.pngsgg.png " সদৃশ সার্ভারপ্রপিটিস ডিটেক্টর "," বসন্ত.সোর্স-org.springframework.boot।অটোকনফিগার.ওয়েব.আরসোর্সপ্রপ্রেটিস "," org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfigration $ DefaultErrorViewResolverConfigration "," কনভেনশনআররভিউরিজলভার.স্রুটিগ্রাগগ্রাফ্রেকচারগ্রেটগ্রেটারগ্রেটগ্রাম কনটেক্সটপ্যারামিটারস "," কনটেক্সটঅ্যাট্রিবিউটস "," স্প্রিং.এমভিসি -আরগ.স্প্রিংফ্রেমওয়ার্ক.বूट.আটোকনফিগিউর.ইউব.উইব এমভিসিপ্রপিটিস "," স্প্রিং। htp.mલ્ટpart-org.springframework.boot.autoconfigure.web.tspartworkProp। " boot.autoconfigure.web.MultpartAutoConfigration "," মাল্টিপার্টকনফিগমেন্ট "," org.springframework.boot.autoconfigure.web।DispatcherServletAutoConfiguration $ DispatcherServletRegistrationConfiguration "," org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration $ DispatcherServletConfiguration "," dispatcherServlet "," dispatcherServletRegistration "," requestContextFilter "," org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration "," hiddenHttpMethodFilter " , "এইচপিপুটফর্মকন্টেন্টফিল্টার", "চরিত্রের এনকোডিং ফিল্টার", "org.springframework.context.event.internEventListener প্রসেসর", "org.springframework.context.event.internEventListenerF কারখানা", "রিপোর্টারেটর এক্সপোর্টিংসর্ট।" বুটautoconfigure.AutoConfigurationPackages "," org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration "," org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration $ Jackson2ObjectMapperBuilderCustomizerConfiguration "," spring.jackson-org.springframework.boot.autoconfigure.jackson। JacksonProperties "," standardJacksonObjectMapperBuilderCustomizer "," org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration $ JacksonObjectMapperBuilderConfiguration "," org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration "," jsonComponentModule "," jacksonObjectMapperBuilder "," org.springframework। boot.autoconfigure.jackson।JacksonAutoConfiguration $ JacksonObjectMapperConfiguration "," jacksonObjectMapper "," org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration "," org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration "," org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration " , "org.springframework.boot.autoconfigure. માન્યকরণ.ভালিডেশনআউটকনফিগারেশন", "ডিফল্টভিডিয়েটর", "org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfigration $ হোয়াইটলেলআরওয়্যার" ক্রিয়াকলাপের ত্রুটি "কনফিগারেশন , "org.springframework.boot.autoconfigure.web।WebMvcAutoConfiguration $ EnableWebMvcConfiguration "," org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration $ WebMvcAutoConfigurationAdapter "," mvcContentNegotiationManager "," org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration $ StringHttpMessageConverterConfiguration "," stringHttpMessageConverter "," org.springframework। boot.autoconfigure.web.JacksonHttpMessageConvertersConfiguration $ MappingJackson2HttpMessageConverterConfiguration "," mappingJackson2HttpMessageConverter "," org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration "," messageConverters "," mvcConversionService "," mvcValidator ","requestMappingHandlerAdapter "," mvcResourceUrlProvider "," requestMappingHandlerMapping "," mvcPathMatcher "," mvcUrlPathHelper "," viewControllerHandlerMapping "," beanNameHandlerMapping "," resourceHandlerMapping "," defaultServletHandlerMapping "," mvcUriComponentsContributor "," httpRequestHandlerAdapter "," simpleControllerHandlerAdapter "," handlerExceptionResolver " , "এমভিসিভিউরেসলভার", "org.springframework.boot.autoconfigure.web.WebMvcAutoConfigration $ WebMvcAutoConfigrationAdapter $ ফ্যাভিকন কনফিগারেশন", "ফ্যাভিকনরেকুথহ্যান্ডার", "ডিফল্ট" অ্যাপ্লিকেশনভিউরেসোলভার "," ওয়েলকামপেজহ্যান্ডলারম্যাপিং "," org.springframework.boot.autoconfigure.jmx.Jmx আউটকনফিগারেশন "," অবজেক্টনমিংস্ট্রেজি "," মায়াবাইনসर्ভার "," মিবিন এক্সপোর্টার "," org.springframeConstationAdation.figaut.com "" org.springframework.boot.autoconfigure.context.ConfigrationPropertiesAutoConfigration "," org.springframework.boot.autoconfigure.web.JacksonHttpMessageConvertersConfigration "।" স্পট.ইন.ফ্রোগ্রিফ.গ্রিপশন.ফ্রন্ট.ইন.ফোরোগ্রাট। স্প্রিংফ্রেমওয়ার্ক.বूट.আটোকনফিগিউর.ইন.ফো.প্রজেক্ট ইনফো অটো কন্টিগিগ্রেশন "," মাল্টিপার্টআরসোলভার "," org।স্প্রিংফ্রেমওয়ার্ক.বুট.আউটকনফিগুর.আর.বি.বিউবপ্লাইটআউটকোফাইগ্রেশন $ রিসেটপ্লেট কনফিগারেশন "," রিসটেম্পলেটবিল্ডার "," org.springframework.boot.autoconfigure.web.WebClientToGonfigrationGotsgfigrationto. " org.springframework.boot.devtools.autoconfigure.LocalDevToolsAutoConfiguration $ RestartConfiguration "," fileSystemWatcherFactory "," classPathRestartStrategy "," classPathFileSystemWatcher "," hateoasObjenesisCacheDisabler "," org.springframework.boot.devtools.autoconfigure.LocalDevToolsAutoConfiguration $ LiveReloadConfiguration $ LiveReloadServerConfiguration "," org.springframework.boot.devtools.autoconfigure।লোকালডিভটুলসআউটকোফিগ্রেশন $ লাইভরেলওড কনফিগারেশন "," alচ্ছিক লাইভরেলওড সার্ভার "," অরগ।


6

আপনি কল করার চেষ্টা করতে পারেন

org.springframework.beans.factory.ListableBeanFactory.getBeansOfType(Object.class)

অথবা ডিবাগ লগিং চালু করুন org.springframework। (বসন্ত বুটে, এটি পরামিতি ব্যবহার করছে --logging.level.org.springframework=DEBUG)


ListableBeanFactoryএকটি ইন্টারফেস। ইন্টারফেসের পদ্ধতি getBeansOfTypeবা অন্য কোনও পদ্ধতি চালনার জন্য এমন একটি শ্রেণীর উদাহরণ কোথায় পাওয়া যাবে যাতে ইন্টারফেসটি প্রসারিত হয় ? আমি দেখতে পাচ্ছি যে ApplicationContextএটি প্রসারিত হয়েছে, তবে আপনার উদাহরণটি দেখায় না যে কীভাবে সেগুলির মধ্যে একটি অর্জন করা যায়।
এরিক

আপনি কেবল একটি ক্ষেত্র যোগ করতে পারেন @Autowired ListableBeanFactory listableBeanFactoryএবং একটি পাবেন (বাস্তবায়নের ধরণের বিষয়টি বিবেচনা করা উচিত নয়)
আর্টব্রিজটল

1

spring-boot-starter-actuatorআপনি ব্যবহার করে সহজেই সমস্ত শিম অ্যাক্সেস করতে পারেন।

সেটআপ প্রক্রিয়াটি এখানে:

  1. গ্রেডে নির্ভরতা যুক্ত করুন :

গ্রেড গ্রেড ফাইল এ যুক্ত করুন:

compile("org.springframework.boot:spring-boot-starter-actuator")
  1. অ্যাপ্লিকেশন.সমষ্টিগুলিতে সুরক্ষা সক্ষম করুন :

যোগ management.security.enabled=falseআপনার application.property ফাইলে

  1. কল / মটরশুটি শেষ পয়েন্ট :

    এর পরে বসন্ত সেটআপের সাথে সম্পর্কিত কিছু মেট্রিকগুলি সক্ষম করে। এর একটি বিন্দু হল / মটরশুটি এই এন্ডপয়েন্টগুলিকে কল করার পরে এটি একটি জসন ফাইল সরবরাহ করবে যা এতে আপনার নির্ভরযোগ্যতা এবং স্কোপ সহ সমস্ত মটরশুটি রয়েছে।

এখানে জেসন ফাইলের একটি উদাহরণ রয়েছে:

[{"context":"application:8442","parent":null,"beans":[{"bean":"beanName","aliases":[],"scope":"singleton","type":"packageName$$4b46c703","resource":"null","dependencies":["environment","beanName1","beanName2"]},{"bean":"org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory","aliases":[],"scope":"singleton","type":"org.springframework.core.type.classreading.CachingMetadataReaderFactory","resource":"null","dependencies":[]}]

আরও তথ্যের জন্য দর্শন লিংক ভিজিট করুন:

আশা করি এটা তোমাকে সাহায্য করবে। ধন্যবাদ :)


4
বসন্ত! = বসন্ত-বুট
হিমাংশু ভরদ্বাজ

হ্যাঁ, সত্য ভাই :)। এই সমাধানটি স্প্রিন্ট বুটের জন্য।
মোঃ সাজেদুল করিম

1

বসন্ত অ্যাপ্লিকেশন প্রসঙ্গ থেকে সমস্ত শিমের নাম মুদ্রণের জন্য এখানে আরেকটি উপায় রয়েছে:

import java.util.Arrays;
import java.util.concurrent.atomic.AtomicInteger;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

/***********************************************************************************************************
 * Java File: MainApplication.java
 * Description: Main class to run the application.
 * 
 ***********************************************************************************************************/

@SpringBootApplication
public class MainApplication {

private static final Logger logger = LogManager.getLogger(MainApplication.class);

public static void main(String[] args) 
{
    final ConfigurableApplicationContext context = SpringApplication.run(MainApplication.class, args);

    final AtomicInteger counter = new AtomicInteger(0);
    logger.info("**************** START: Total Bean Objects: {} ******************", context.getBeanDefinitionCount());

    Arrays.asList(context.getBeanDefinitionNames())
    .forEach(beanName -> {
        logger.info("{}) Bean Name: {} ", counter.incrementAndGet(), beanName);
    });

    logger.info("**************** END: Total Bean: {} ******************", context.getBeanDefinitionCount());
}

}


Sample Output:

2019-11-27 20:08:02.821 INFO  [main] [c.c.a.MainApplication:18] - **************** START: Total Bean Objects: 564 ****************** 
...........................
2019-11-27 20:08:02.821 INFO  [main] [c.c.a.MainApplication:22] - 460) Bean Name: mvcPathMatcher  
2019-11-27 20:08:02.821 INFO  [main] [c.c.a.MainApplication:22] - 461) Bean Name: mvcUrlPathHelper  
2019-11-27 20:08:02.821 INFO  [main] [c.c.a.MainApplication:22] - 462) Bean Name: viewControllerHandlerMapping  
2019-11-27 20:08:02.821 INFO  [main] [c.c.a.MainApplication:22] - 463) Bean Name: beanNameHandlerMapping  
2019-11-27 20:08:02.821 INFO  [main] [c.c.a.MainApplication:22] - 464) Bean Name: resourceHandlerMapping 
...........................
2019-11-27 20:08:02.821 INFO  [main] [c.c.a.MainApplication:25] - **************** END: Total Bean: 564 ****************** 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.