精华内容
参与话题
问答
  • 环境Idea + maven,相关依赖 <dependencies> <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.sp...

    环境Idea + maven,相关依赖

        <dependencies>
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>4.3.13.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
    
        </dependencies>

     

    1. @Configuration注解相当于原先spring的xml配置文件,用配置类代替配置文件

     

    1. @Bean注解 在配置了@Configuration的配置类中使用
    2. @Bean注解配置在方法名上,在IOC容器中的名称就是方法名
    3. 改别名则传入别名例如@Bean("别名")

    完整例子

    package bean;
    
    public class HelloWorld {
        String hello="Hello demo";
    
        @Override
        public String toString() {
            return "HelloWorld{" +
                    "hello='" + hello + '\'' +
                    '}';
        }
    }
    
    package config;
    
    import bean.HelloWorld;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class Config {
        @Bean("hello")
        public HelloWorld hello(){
            return new HelloWorld();
        }
    }
    

    单元测试 

    package config;
    
    import bean.HelloWorld;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    
    
    import static org.junit.Assert.*;
    
    public class ConfigTest {
    
        @Test
        public void test1(){
            ApplicationContext applicationContext = new AnnotationConfigApplicationContext(Config.class);
            HelloWorld hello = (HelloWorld) applicationContext.getBean("hello");
            System.out.println(hello);
        }
    }

    输出结果

    通过修改@Bean(“参数”)可以更改别名

    展开全文
  • Bean注解的bean名字

    千次阅读 2018-11-19 01:05:42
    @Bean注解括号里面的字符串就是bean的名字,也可以不加,默认bean的名字是@Bean注解所对应的方法的方法名

    @Bean注解括号里面的字符串就是bean的名字,也可以不加,默认bean的名字是@Bean注解所对应的方法的方法名

    展开全文
  • @Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。添加的bean的id为方法名 定义bean 下面是@Configuration里的一个例子 @Configuration public class ...

    @Bean 的用法

    @Bean是一个方法级别上的注解主要用在@Configuration注解的类里也可以用在@Component注解的类里。添加的bean的id为方法名

    定义bean

    下面是@Configuration里的一个例子

    
    @Configuration
    
    public class AppConfig {
    
    
    @Bean
    
    public TransferService transferService() {
    
    return new TransferServiceImpl();
    
    }
    
    
    }

    这个配置就等同于之前在xml里的配置

    
    <beans>
    
    <bean id="transferService" class="com.acme.TransferServiceImpl"/>
    
    </beans>

    bean的依赖

    @bean 也可以依赖其他任意数量的bean,如果TransferService 依赖 AccountRepository,我们可以通过方法参数实现这个依赖

    
    @Configuration
    
    public class AppConfig {
    
    
    @Bean
    
    public TransferService transferService(AccountRepository accountRepository) {
    
    return new TransferServiceImpl(accountRepository);
    
    }
    
    
    }

    接受生命周期的回调

    任何使用@Bean定义的bean,也可以执行生命周期的回调函数,类似@PostConstruct and @PreDestroy的方法。用法如下

    
    
    public class Foo {
    
    public void init() {
    
    // initialization logic
    
    }
    
    }
    
    
    public class Bar {
    
    public void cleanup() {
    
    // destruction logic
    
    }
    
    }
    
    
    @Configuration
    
    public class AppConfig {
    
    
    @Bean(initMethod = "init")
    
    public Foo foo() {
    
    return new Foo();
    
    }
    
    
    @Bean(destroyMethod = "cleanup")
    
    public Bar bar() {
    
    return new Bar();
    
    }
    
    
    }

    默认使用javaConfig配置的bean,如果存在close或者shutdown方法,则在bean销毁时会自动执行该方法,如果你不想执行该方法,则添加@Bean(destroyMethod="")来防止出发销毁方法

    指定bean的scope

    使用@Scope注解

    你能够使用@Scope注解来指定使用@Bean定义的bean

    
    @Configuration
    
    public class MyConfiguration {
    
    
    @Bean
    
    @Scope("prototype")
    
    public Encryptor encryptor() {
    
    // ...
    
    }
    
    
    }

    @Scope and scoped-proxy

    spring提供了scope的代理,可以设置@Scope的属性proxyMode来指定,默认是ScopedProxyMode.NO, 你可以指定为默认是ScopedProxyMode.INTERFACES或者默认是ScopedProxyMode.TARGET_CLASS。
    以下是一个demo

    
    
    // an HTTP Session-scoped bean exposed as a proxy
    
    @Bean
    
    @SessionScope
    
    public UserPreferences userPreferences() {
    
    return new UserPreferences();
    
    }
    
    
    @Bean
    
    public Service userService() {
    
    UserService service = new SimpleUserService();
    
    // a reference to the proxied userPreferences bean
    
    service.setUserPreferences(userPreferences());
    
    return service;
    
    }

    自定义bean的命名

    默认情况下bean的名称和方法名称相同,你也可以使用name属性来指定

    
    @Configuration
    
    public class AppConfig {
    
    
    @Bean(name = "myFoo")
    
    public Foo foo() {
    
    return new Foo();
    
    }
    
    
    }

    bean的别名

    bean的命名支持别名,使用方法如下

    
    @Configuration
    
    public class AppConfig {
    
    
    @Bean(name = { "dataSource", "subsystemA-dataSource", "subsystemB-dataSource" })
    
    public DataSource dataSource() {
    
    // instantiate, configure and return DataSource bean...
    
    }
    
    
    }

    bean的描述

    有时候提供bean的详细信息也是很有用的,bean的描述可以使用 @Description来提供

    
    @Configuration
    
    public class AppConfig {
    
    
    @Bean
    
    @Description("Provides a basic example of a bean")
    
    public Foo foo() {
    
    return new Foo();
    
    }
    
    
    

     

    注: 
    (1)、@Bean注解在返回实例的方法上,如果未通过@Bean指定bean的名称,则默认与标注的方法名相同; 

    (2)、@Bean注解默认作用域为单例singleton作用域,可通过@Scope(“prototype”)设置为原型作用域; 

    (3)、既然@Bean的作用是注册bean对象,那么完全可以使用@Component、@Controller、@Service、@Ripository等注解注册bean,当然需要配置@ComponentScan注解进行自动扫描。

    bean类:

    package com.test.spring.support.configuration;
    
    //添加注册bean的注解
    @Component
    public class TestBean {
    
        public void sayHello(){
            System.out.println("TestBean sayHello...");
        }
    
        public String toString(){
            return "username:"+this.username+",url:"+this.url+",password:"+this.password;
        }
    }
    


    配置类:

    @Configuration//添加自动扫描注解,basePackages为TestBean包路径

    @ComponentScan(basePackages = "com.test.spring.support.configuration")
    public class TestConfiguration {
        public TestConfiguration(){
            System.out.println("spring容器启动初始化。。。");
        }
    
        //取消@Bean注解注册bean的方式
        //@Bean
        //@Scope("prototype")
        //public TestBean testBean() {
        //  return new TestBean();
        //}
    }
    


    主方法测试获取bean对象:

    public class TestMain {
        public static void main(String[] args) {
            ApplicationContext context = new AnnotationConfigApplicationContext(TestConfiguration.class);
            //获取bean
            TestBean tb = context.getBean("testBean");
            tb.sayHello();
        }
    }



    sayHello()方法都被正常调用。
     

    Spring 声明Bean的注解:

    @Component: 组件,没有明确的角色。 
    @Service : 在业务逻辑层(Service层)使用。
    @Repository:  再数据访问层(Dao层)使用。
    @Controller: 再展现层(MVC->Spring MVC)使用。

    Spring 注入Bean的注解:
    @Autowired:Spring提供的注解。
    @inject:JSR-330提供的注解。
    @Resource:JSP-250提供的注解。

    ‘@Autowired’ 和‘@Inject’他们都是通过‘AutowiredAnnotationBeanPostProcessor’ 类实现的依赖注入,二者具有可互换性。 
    ‘@Resource’通过 ‘CommonAnnotationBeanPostProcessor’ 类实现依赖注入,即便如此他们在依赖注入时的表现还是极为相近的。
    以下是他们在实现依赖注入时执行顺序的概括:

    @Autowired and @Inject
    Matches by Type
    Restricts by Qualifiers
    Matches by Name
    @Resource
    Matches by Name
    Matches by Type
    Restricts by Qualifiers (ignored if match is found by name)
    参考:
    http://blog.csdn.net/u013474104/article/details/44352765/
     

     

    展开全文
  • @Bean 注解

    千次阅读 2018-09-14 19:50:42
    @Bean 注解会告诉Spring该方法会返回一个对象。该对象要注册为Spring应用上下文中的bean,方法中包含了最终产生bean实例的逻辑。如下代码: @Bean public CompactDisc sgtPeppers(){  return new CompactDisc();...

    @Bean用在方法上

    @Bean 注解会告诉Spring该方法会返回一个对象。该对象要注册为Spring应用上下文中的bean,方法中包含了最终产生bean实例的逻辑。如下代码:

    @Bean

    public CompactDisc sgtPeppers(){

         return   new CompactDisc();

    }

    默认情况下,bean的ID与带有@Bean的方法名一样的,上面的方法所产生的bean的名字将会是:sgtPeppers。如果想设置成其他名字可以重命名该方法,也可以设置name属性;如:

    @Bean(name = "lonelyHeartsClubBand")

    public  CompactDisc  sgtPeppers(){

         return   new CompactDisc();

    }

    Spring会拦截所有对该方法的调用,并确保直接返回方法所创建的bean,而不是每次都对其进行实际的调用。因为Spring默认创建的bean都是单例的。

    @Bean 也支持init-method和destory-method。

    @Bean(name="store",initMethod="init",destoryMethod="destory")这两个方法应该在实现类里面

    可以参考该博客:https://blog.csdn.net/xhf852963/article/details/78079329

     

    展开全文
  • Spring Bean 注解

    千次阅读 2018-07-19 13:26:52
    注解通过启用@Required注解  @Autowired注解 @Autowired的(required=false)选项  @Qualifier 注解  Spring JSR-250 注解 注解通过&lt;context:annotation-config/&gt;启用 &lt;?xml ver...
  • 先看下面代码: package com.xhx.spring.config; import ... import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.Configurab...
  • 关于@Bean注解

    千次阅读 2019-05-13 17:37:11
    传送门 https://www.jianshu.com/p/2f904bebb9d0 ... @Bean @Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。作用为注册bean对象。...@Bean注解在返回实...
  • springboot bean 注解绑定

    千次阅读 2017-10-12 15:16:52
    spring boot中可以通过配置文件来注入的bean的属性上去 例如 @Component @ConfigurationProperties(prefix = "book") @PropertySource("classpath:book.properties") 但是你要注入属性文件内容不要再...
  • spring @bean注解

    2018-07-02 14:38:39
    参考:https://www.cnblogs.com/bossen/p/5824067.html注解分为两类:一类作用是从Ioc中取bean;如:autowire,resource一类作用是将类注册到bean;如:component,Controller 等。@bean属于第二类,用于注解一个方法,...
  • Spring@Bean注解

    2019-04-28 13:46:27
    @Bean是一个方法级别上的注解,主要用在@Configuration注解的类里边,也可以用在@Component注解的类里,添加的bean的ID为方法名 定义bean 下面是@Configuration里的一个例子: @Configuration public class ...
  • Spring bean注解开发

    2014-10-19 14:17:20
    Spring bean基于注解开发 Spring的开发可以基于xml配置文件也可以基于注解开发,各有优点(注解开发块,xml后期修改查看方便) 要使用注解首先要配置扫描组件:即配置 特定组件包括: 1.@Component:基本注解...
  • 今天屌丝跟大家来评论评论SSH注解配置中的几种注解模式,切入正题: 使用过SSH注解的屌丝们都知道,要想使用注解需要在applicationContext.xml配置文件里面开启注解配置,开启方式如下: 1.头部声明需加入 ...
  • @Configuration 和 @Bean注解注入bean

    千次阅读 2019-05-29 10:34:26
    理解 @Configuration 和 @Bean 注释 在理想的场景中,您可以在表示应用程序上下文的 XML 中定义 bean。以下代码展示了创建课程用例中的上下文 XML 及 bean 定义: 清单 1. XML 与 bean 定义 <beans> <...
  • Spring的@bean注解

    万次阅读 2018-06-27 14:54:42
    Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。 (和xml配置中的bean标签的作用是一样的) 例子 我们使用一个案例来解释 (1)功能类Bean package ...
  • @Bean 注解全解析 随着SpringBoot的流行,基于注解式开发的热潮逐渐覆盖了基于XML纯配置的开发,而作为Spring中...Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Be...
  • @Componet:通用注解,可用于任何bean,不推荐使用 @Reposity, @Service,@Controller更有针对性注解 @Reposity: 注解DAO类,即持久层 @Service: 注解Service类,即服务层 @Controller:Controller类,即控制层(MVC...
  • @Bean 注解全解析

    千次阅读 2019-09-14 17:17:21
    随着SpringBoot的流行,基于注解式开发的热潮逐渐覆盖了基于XML纯配置的开发,而作为Spring中...Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring...
  • Spring关于@Bean注解

    千次阅读 2017-09-24 20:25:43
    基于java容器的注解  ...可以坐在Spring的@Component注解的类中使用@Bean注解任何方法(仅仅是可以) 通常和@Bean一起使用的是@Configuration,不是@Component 例: @Component public class App{ 声明一个类,
  • Spring bean 注解方式注入

    千次阅读 2013-08-13 20:04:34
    对于Spring bean 注解装配 目前已经有大量的文章包括文档,现总结一下。
  • 1、springdemo\src\main\resources\beans.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...
  • spring中@Bean注解

    2019-05-14 00:21:28
    ①@Bean注解括号里面的字符串就是bean的名字,也可以不加,默认bean的名字是@Bean注解所对应的方法的方法名。 ②@Bean注解的方法,其参数的取值为spring容器中的bean。 ...
  • spring @Bean注解的使用

    万次阅读 2018-02-01 22:57:24
    @Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。添加的bean的id为方法名 定义bean 下面是@Configuration里的一个例子 @Configuration public class ...
  • @Configuration与@Bean注解的原理

    万次阅读 2019-06-18 13:59:37
    @Configuration与@Bean结合使用。@Configuration可理解为用spring的时候xml里面的<beans>标签,@Bean可理解为用spring的时候xml里面的<bean>标签。Spring Boot不是spring的加强版,所以@Configuration和...
  • @Bean 注解的作用

    2020-06-26 12:22:03
    被 @Bean 注解标注的方法会创建一个 bean 的实例,放在 spring IoC 容器中。等需要使用这个 bean 的时候,在类里用 @Autowired,@Resource 注入这个对象就行了。 @Bean public AccountDao accountDao() { return ...
  • @Bean注解、@Configuration注解、@Import注解三个注解都是spring的配置类。 @Bean注解 @Bean注解是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。@Bean注解把当前...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...

空空如也

1 2 3 4 5 ... 20
收藏数 27,882
精华内容 11,152
热门标签
关键字:

bean注解