java 随笔

Spring的scope="prototype"属性 - 多例

  spring 默认scope 是单例模式(singleton),这样只会创建一个Action对象,每次访问都是同一个Action对象,数据不安全。
  struts2 是要求每次次访问都对应不同的Action,scope="prototype"(多例) 可以保证 当有请求的时候 都创建一个Action对象。

request.getParameter() 和request.getAttribute() 区别:

  getParameter 是用来接受用post个get方法传递过来的参数的。
  getAttribute 必须先setAttribute。

Bean

  参考:https://www.cnblogs.com/xiaoxi/p/5850095.html

<bean
    id="beanId"(1)
    name="beanName"(2class="beanClass"(3)
    parent="parentBean"(4abstract="true | false"(5)
    singleton="true | false"(6)
    lazy-init="true | false | default"(7)
    autowire="no | byName | byType | constructor | autodetect | default"(8)
    dependency-check = "none | objects | simple | all | default"(9)
    depends-on="dependsOnBean"(10)
    init-method="method"(11)
    destroy-method="method"(12)
    factory-method="method"(13)
    factory-bean="bean">(14</bean>

  参考:https://www.cnblogs.com/zffenger/p/5808031.html

<bean    class="bean的完全限定名"
         name/id="bean在容器内的唯一名称"
            scope="bean的生命周期"
            lazy-init="是否为延迟加载"
            init-method="bean的setter被调用之后调用该方法进行初始化"
            destroy-method="容器在销毁该Bean后的调用的方法"
            abstract="是否为抽象Bean,spring对于抽象bean不产生实例,主要用于继承"
            parent="父Bean的名称,会继承父Bean的属性,与Java的Class无任何关系"
            factory-method="工厂方法的名字"
            factory-bean="工厂Bean的名字"
            depends-on ="依赖Bean的名字,保证初始化顺序。” > 

            <!-- Constructor-arg给属性赋值写法一 -->
            <constructor-arg type="int" value="10"/>
            <!-- Constructor-arg给属性赋值写法二 -->
            <constructor-arg name="age" value="10"/>
            <!-- Constructor-arg给属性赋值写法三 -->
            <constructor-arg index="0" value="10"/>

            <!-- Properties给属性赋值写法一 -->
            <property name="bean1">
                 <ref bean="另外一个bean的id"/>
            </property>
            <!-- Properties给属性赋值写法二 -->
            <property name="bean1" ref="另外一个bean的id"/>
            <!-- Properties给属性赋值写法三 -->
            <property name="age" value="10"/>
</bean>

spring注解

 借鉴:https://www.cnblogs.com/xiaoxi/p/5935009.html。 

  1、@Autowired

    @Autowired顾名思义,就是自动装配,其作用是为了消除代码Java代码里面的getter/setter与bean属性中的property。当然,getter看个人需求,如果私有属性需要对外提供的话,应当予以保留。

    @Autowired默认按类型匹配的方式,在容器查找匹配的Bean,当有且仅有一个匹配的Bean时,Spring将其注入@Autowired标注的变量中。

  2、Qualifier(指定注入Bean的名称)

  3、Resource 默认通过name属性去匹配bean

@Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。
@Scope注解 作用域
@Lazy(true) 表示延迟初始化
@Service用于标注业务层组件
@Controller用于标注控制层组件(如struts中的action)
@Repository用于标注数据访问组件,即DAO组件
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注
@Scope用于指定scope作用域的(用在类上)
@PostConstruct用于指定初始化方法(用在方法上)
@PreDestory用于指定销毁方法(用在方法上)
@DependsOn:定义Bean初始化及销毁时的顺序
@Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
@Autowired 默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:
@Autowired @Qualifier("personDaoBean") 存在多个实例配合使用
@Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配
@PostConstruct 初始化注解
@PreDestroy 摧毁注解 默认 单例  启动就加载
@Async异步方法调用

 

posted @ 2019-05-07 14:35  暗夜消辰  阅读(175)  评论(0编辑  收藏  举报