spring中bean的简单记录

bean的创建方式

1、构造方法创建(类中需有对应的构造方法)

<bean id="constructInjection" class="com.huawei.bean.ConstructInjection"
	  scope="prototype" init-method="init" destroy-method="destory">
	<constructor-arg type="java.lang.String" value="likui"></constructor-arg>
	<constructor-arg name="age" value="18"></constructor-arg>
	<constructor-arg index="2" ref="now"></constructor-arg>
</bean>

2、set方法创建(类中需有对应的属性,并提供set方法)

<bean id="setterInjection" class="com.huawei.bean.SetterInjection">
	<property name="name" value="likui"></property>
</bean>

3、注解创建
@Component
@Controller
@Service
@Repository

bean的作用域

scope属性

  • singleton
  • prototype
  • request
  • session
  • global session
    其中global session的配置为针对集群的配置。设置session对所有服务器都有效。

bean的生命周期

- singleton
单例bean随着spring容器的创建而创建,容器销毁时销毁。
创建时执行init方法,销毁时执行destory方法。

- prototype
多例bean在使用时创建,由jvm进行回收。
创建时执行init方法,销毁时不会执行destory方法。

bean相关注解

- @Component
有value属性,可指定创建的实例名称,如不指定,默认为类名首字母小写。
还有三个衍生注解:
@Controller
@Service
@Repository

- @Autowired
自动按照类型注入

- @Qualifier
可与@Autowired搭配使用用于指定按照每一个名称注入,如
@Autowired
@Qualifier("userDaoImpl)

- @Resource(name = “userDaoImpl”)
相当于
@Autowired
@Qualifier(“userDaoImpl)
**- @PostConstruct
用于指定init方法,相当于xml中的init-method=”"

- @PreDestroy
用于指定销毁方法,相当于xml中的destroy-method=""

- @Value

用于基本数据类型和String的注入,并支持el表达式,如:@Value(${com.huawei.name})

spring的新注解

  • @Configuration
    用于类上,指定该类是一个配置类,作用相当于bean.xml配置文件,和 @Bean配合使用。

  • @ComponentScan
    用于指定spring容器要扫描的包,相当于xml配置文件中的

    <context:component-scan base-package="com.huawei"/>
    
  • @Bean
    用于方法上,创建的实例如果没有指定名称,则为方法名。
    例如:

     @Configuration
     @ComponentScan(basePackages = "com.huawei")
     public class SpringConfiguration {
     
         @Bean
         public Connection getConnection(){
             return null;
         }
     }
    
  • @Import
    用于引入其他配置类。
    如:

     @Configuration
     @ComponentScan(basePackages = "com.huawei")
     @Import(JdbcConfiguration.class)
     public class SpringConfiguration {
     
         @Bean
         public Connection getConnection(){
             return null;
         }
     }
    

指定JdbcConfiguration为配置类,同时JdncConfiguration上不用写 @Configuration注解。

  • @PropertySource
    用于指定属性文件位置,如:

     @Configuration
     @ComponentScan(basePackages = "com.huawei")
     @Import(JdbcConfiguration.class)
     @PropertySource("classpath:jdbc.properties")
     public class SpringConfiguration {
     
         @Bean
         public Connection getConnection(){
             return null;
         }
     }
    
发布了6 篇原创文章 · 获赞 0 · 访问量 126

猜你喜欢

转载自blog.csdn.net/li210530/article/details/95237645
今日推荐